设计思想和方法论
提示:设计思想是思路上的,是逻辑的起点和方向;方法论则是流程上的,是总结而来的经验。
设计思想和哲学相关。 方法论是实践得到的。
前言
提示:本部分的设计思想和方法论是针对程序设计的
一、设计思想
1.1 模块化
模块化,是指单独的模块要提高通用性,即要能应对使用条件下的各种情形。模块本身具有封装性,只留接口以供调用。类似于库函数(printf)。
模块化本质上是化繁为简的思想,因为调用模块而不需要看代码,只需看开头的注释。写模块的过程是复杂的,调用方法是简洁的
当程序鲁棒性无法改善时,就要限制使用场景,提醒用户规避这种情形。
模块的程序功能,输入参数需要列清楚。
如何实现模块化:
根据算法流程图,划分模块。
1.2 结构化编程
i结构化就是按程序功能需要,由上到下,分而治之。按照功能或者处理需要等原则,将程序分为几个部分,分开设计和编程。最后实现组合。
如何实现结构化编程
- 首先梳理顶层模块
- 顶层模块向下划分,直至无需再进行划分
- 由下向上写各模块的程序,同时,由下向上进行测试
1.3 分类讨论
if-else与switch-case本质上就是分类讨论。
分类讨论,分类的方式就是为了使目标结构更清晰。所以可以尝试由大到小分类,找好分类依据,逐步细化。
二、代码调试
代码调试需要借助工具,包括软件调试和硬件调试。此处不对工具做讨论,而是介绍调试的一般思路。
- 设定输入,获取输出。判断程序是否正确
1)针对某一场景,设定输入,判断是否正确。
2)代码优化,需要提高算法鲁棒性时,才需增加测试的场景。 - 程序有问题,先判断程序的流程是否正确
1)单步执行,查看流程是否正确
2)下断点,自动执行(run),判断是否在断点处停留(这个断点是程序正确时必须经过的点),若没有停留,检查是否进入了某个循环
3)检查控制流程的相关变量是否正确 - 流程正确时,排查可能配置错误的变量/模块
1)梳理可能出错的变量或模块
2)设置断点和观察点,检查变量/模块的值
2)找到出问题的变量后,检查赋值的过程;找到出问题的模块后,重复1~3
三 程序修改
3.1 版本控制
程序修改要做好版本控制,避免修改后还不如上一个版本,也能避免程序无法恢复并且无法对比。
3.2 确定修改方案
- 删除变量要彻底,避免残留。
- 尽量不要修改变量名,尤其是大项目。所以变量名最好一开始就准确并且规范。
总结
提示:这里对文章进行总结:
本文档需要不断补充完善