热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

项目开发流程_值得参考的项目开发流程

摘要:科学的开发流程可以提高效率,减少不必要的加班。原文:对项目开发流程的思考和小结作者:zzzzouFundebug经授权
98ea7f39-b027-eb11-8da9-e4434bdf6706.png

摘要: 科学的开发流程可以提高效率,减少不必要的加班。

  • 原文:对项目开发流程的思考和小结
  • 作者:zzzzou

Fundebug经授权转载,版权归原作者所有。

最近在项目开发中遇到的问题

  • 对要开发的产品的最终形态没有明确的了解,没有明确的目的性,导致多次返工,重新设计。
  • 没有明确的开发顺序,开发的模块东一块西一块不流畅不连贯,导致模块之间耦合太高,代码散落多处难以继续开发和维护。
  • 没有系统设计结构图,没有区分数据层面、控制层面、业务层面、展示层面、交互层面、界面层面,不能随时了解当下的开发位置和进度,无法预计后续开发的时间和下一个合适的开发位置。
  • 代码写的过分冗余,不够优美,主要是因为没有写伪代码来说明一个函数中每一部分的逻辑以及逻辑上下的关系。
  • 代码写的过分硬编码,不够抽象,当发现要抽象的时候,需要重新修改之前的编码。
  • 没有考虑数据交互的结构设计,数据结构设计应该单独拎出来作为单独函数封装以便后续扩展
  • 花过多的时间在界面设计上,时间浪费在过多的样式调整上。
  • 每次编码没有写上测试的内容,开发进度被多次延误,不能保证代码的正确性,基础性的bug过多。

仔细的梳理流程后,大致整理了如下几个步骤。

第一部分、分析和规划设计

如下2步,需要画图、笔记、文字记录、演算、推理、画流程图、画架构图

1、产品选型

明确产品界面、交互设计、功能设计、模块区分,寻找相仿的产品上手体验、操作,感知功能的使用和交互的体验,目的是为了了解即将要做的产品有大致的模型,对产品模型了解的越细致越好

2、分离架构

对产品从各个维度分离架构,从功能,目录,逻辑拆分,抽象,业务流的明确,数据流的流向,交互体验的设计,从整体拆分成局部,针对每个局部再继续拆分,从局部整合成系统,考虑整体和局部之间的相互影响关系

循环这2步,最终得到一个产品系统,应该对产品系统非常了解,从整体到局部,从需求到逻辑,端到端的数据流向,交互体验设计,数据库表结构设计

第二部分、实施

3、文档编写

按照系统的各个区域和子系统,编写对应的文档注释,说明此子系统的功能、大致逻辑、含有的接口。

此外,流程应该按照先数据库层面 --> 逻辑控制层面 --> 数据展示层面 --> 交互体验层面 --> 界面设计层面的顺序来规划和思考。

同时考虑扩展性的问题,子系统是否可插拔,组件之间是否强依赖,必要的时候完成架构层面大的抽象。

文档需要大概明确此子系统模块的测试结果是什么,提前演算模块的测试步骤和结果,后续细化的代码必须要通过此测试要求。

4、技术选型

明确每一个子系统和组件需要使用到的工具、框架、第三方库、以及重要的语法或者类设计、或者编程技巧、或者设计模式等等。

5、开发顺序确认

明确这个系统的各个部分的开发顺序,独立的子系统先开发,耦合依赖强烈的系统最后开发,简单的先开发,难的后开发。 规划好开发进度计划。 先开发数据库层面的代码,再开发数据控制层面,再开发数据交互层面,再是数据展示,交互体验设计,界面开发应该放到最后,界面开发最花时间。

6、伪代码编写

使用中文表达逻辑,加上必要的编程语法混合表达。

伪代码的编写是必须的,而且伪代码要写到可以直接演算出代码结果的程度,即可以通过编写伪代码来几乎100%的确定是否符合模块测试的要求。

伪代码必须要完成数据交互的结构设计。

伪代码必须要对函数有明确的定义和解释,可以说明此函数的作用。

7、编码

编码必须符合伪代码的逻辑,编码应该多次测试,慢步前进。

注意编码的版本控制。

编码应该尽量保持优美的逻辑和语法使用。

编码的变量命名应该特别注意。

每一次的编码应该最低按照一个函数单元,即最小编码单位是一个函数,一旦决定编码,就至少完成一个函数单元,或者取消本次函数的编写。

每个函数的完成,都必须要达到伪代码对此函数的定义和解释,注意高内聚和低耦合的问题。

如果没有高内聚,要适当拆分逻辑和代码。

如果没有低耦合,要适当抽象代码,合并其他同类函数。

8、代码review,优化代码

以上每一步,如果出现重大问题和困难,应该向上返回寻找解决方案,因为这些顺序有强烈的依赖性,所以向上找到源头重新设计规划。

也正因为步骤之间的顺序强依赖性,后一步都强烈依赖于前一步,所以前面的步骤必须打好基础,才可以减少返工重新设计和规划的问题。

不是每一步都必须要做到完美,也不是每一个项目都需要使用到每一步,就像PMP一样,是一个套路,需要合理按需使用,但是整体的规划到实施的逻辑是要保证的。

多按照这种套路来完成目的,大部分的事件都在锻炼思考和规划设计能力,编码只是最后实现的一块而已。

总结

  • 开发最小单元应该是一个函数
  • 慢步前进,多做测试
  • 先有数据,再有逻辑
  • 不要花太多时间在界面上
  • 伪代码非常重要,必须要写
  • 文档注释非常重要,必须要写
  • 数据库设计永远是第一步,每次修改、规划设计、增加功能、维护、都首先考虑数据库,所有的代码都围绕着数据库的数据进行设计、开发
  • 编码应该是最后的实现手段,应该是最后的环节
  • 多思考,少编码,思考的越多,错误越少。
  • 适当的冗余和抽象

关于Fundebug

Fundebug专注于Javascript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有Google、360、金山软件、百姓网等众多品牌企业。欢迎大家免费试用!



推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 这篇文章主要讲解了“如何应对Android面试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何应对 ... [详细]
  • 说出来你可能不信,我用三天做了一个完整的项目
    Java在人工智能中能起到什么作用?作为编程语言中的扛把子,Java20多年稳定不倒,就在于它的稳定性,维护成本极低。这使得 ... [详细]
  • 前言:原本纠结于Web 模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中eval函数。虽然eval函 ... [详细]
  • JavaScript和Python是用于构建各种应用程序的两种有影响力的编程语言。尽管JavaScript多年来一直是占主导地位的编程语言,但Python的迅猛发展有 ... [详细]
  • 用NAN写一个nodejs的c++扩大
    NAN引见NAN的全称为NativeAbstractionforNode.js,其表现上是一个Node.js包。装置后,就获得一堆C++头文件,内里是一堆宏。它主要为Node.js ... [详细]
  • 如何使用Node.js在JSON文件中添加数据?原文:h ... [详细]
  • uniapp 框架简介和生命周期
    介绍:uni-app使用vue的语法小程序的标签和API。也就是和这些语法同样作用的框架.生命周期,分为应用生命周期和页面生命周期,和小程序的基本一致.流程开发规范为了实现多 ... [详细]
  • 摘要:通过介绍数据中心不同时期动力环境监控系统的建设和发展,结合数据机房的维护对象、动力环境监控系统的软件组成和工作原理,探讨云计算数据中心动力环境监控系统的配套需求和“集中管理、集中监控集 ... [详细]
  • uni-app入门uni,从这个单词的意思,就能看的出来,Dcoud社区的野心这个试图统治整个前端界的技术,到底有没有那么好呢࿱ ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  • 起因由于我录制过一个小程序的课程,里面有消息模板的讲解。最近有几位同学反馈官方要取消消息模板,使用订阅消息。为了方便大家容易学 PythonFlask构建微信小程序订餐系统 课程。 ... [详细]
  • 腾讯T3大牛亲自教你!2021大厂Android面试经验,经典好文
    本篇将由环境搭建、实现原理、编程开发、插件开发、编译运行、性能稳定、发展未来等七个方面,对当前的ReactNative和Flutter进行全面的分析对比, ... [详细]
  • 前言:原本纠结于Web模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中ev ... [详细]
author-avatar
blankworld
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有