热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

对项目开发流程的思考和小结

最近在项目开发中遇到的问题1、对要开发的产品的最终形态没有明确的了解,没有明确的目的性,导致多次返工,重新设计2、没有明确的开发顺序,开发的模块东一块西一块不流畅不连贯,导致模

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

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


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

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

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

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

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

第二部分、实施

3、文档编写,按照系统的各个区域和子系统,编写对应的文档注释,说明此子系统的功能、大致逻辑、含有的接口。
此外,流程应该按照先数据库层面 --> 逻辑控制层面 --> 数据展示层面 --> 交互体验层面 --> 界面设计层面的顺序来规划和思考。
同时考虑扩展性的问题,子系统是否可插拔,组件之间是否强依赖,必要的时候完成架构层面大的抽象。
文档需要大概明确此子系统模块的测试结果是什么,提前演算模块的测试步骤和结果,后续细化的代码必须要通过此测试要求。

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

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

6、伪代码编写,使用中文表达逻辑,加上必要的编程语法混合表达。
伪代码的编写是必须的,而且伪代码要写到可以直接演算出代码结果的程度,即可以通过编写伪代码来几乎100%的确定是否符合模块测试的要求。
伪代码必须要完成数据交互的结构设计
伪代码必须要对函数有明确的定义和解释,可以说明此函数的作用

7、编码,编码必须符合伪代码的逻辑,编码应该多次测试,慢步前进。
注意编码的版本控制
编码应该尽量保持优美的逻辑和语法使用
编码的变量命名应该特别注意
每一次的编码应该最低按照一个函数单元,即最小编码单位是一个函数,一旦决定编码,就至少完成一个函数单元,或者取消本次函数的编写。
每个函数的完成,都必须要达到伪代码对此函数的定义和解释,注意高内聚和低耦合的问题。
如果没有高内聚,要适当拆分逻辑和代码
如果没有低耦合,要适当抽象代码,合并其他同类函数

8、代码review,优化代码

以上每一步,如果出现重大问题和困难,应该向上返回寻找解决方案,因为这些顺序有强烈的依赖性,所以向上找到源头重新设计规划。
也正因为步骤之间的顺序强依赖性,后一步都强烈依赖于前一步,所以前面的步骤必须打好基础,才可以减少返工重新设计和规划的问题。
不是每一步都必须要做到完美,也不是每一个项目都需要使用到每一步,就像PMP一样,是一个套路,需要合理按需使用,但是整体的规划到实施的逻辑是要保证的。
多按照这种套路来完成目的,大部分的事件都在锻炼思考和规划设计能力,编码只是最后实现的一块而已。


总结

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


推荐阅读
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文探讨了如何在编程中正确处理包含空数组的 JSON 对象,提供了详细的代码示例和解决方案。 ... [详细]
  • andr ... [详细]
  • 解决IIS无法访问映射网络驱动器的问题
    探讨IIS在尝试访问映射的网络驱动器时遇到的问题及其解决方案,包括配置和权限设置等方面的详细分析。 ... [详细]
  • Win11扩展卷无法使用?解决扩展卷灰色问题的指南
    本文详细介绍了在Windows 11中遇到扩展卷灰色无法使用时的解决方案,帮助用户快速恢复磁盘扩展功能。 ... [详细]
  • 本文介绍了如何通过扩展 UnityGUI 创建自定义和复合控件,以满足特定的用户界面需求。内容涵盖简单和静态复合控件的实现,并展示了如何创建复杂的 RGB 滑块。 ... [详细]
  • 深入探讨智能布线管理系统的电子配线架应用
    本文详细介绍了电子配线架智能布线系统的核心优势,包括实时监测网络连接、提高操作准确性、图形化显示连接架构、自动识别网络拓扑、增强安全性等功能。该系统不仅提升了网络管理的效率和准确性,还为资产管理、报告生成以及与其他智能系统的集成提供了强大的支持。 ... [详细]
author-avatar
新起点新娘妆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有