程序开发个人设计总结(更新)
更新日志:2017-10-07 11:47:02 在学习了《大学计算机》后,整理了思维方式
作为一个草莽出身的开发者,在学习《大学计算机》后,了解到自己没有计算思维,完全是靠着一点小聪明在写脚本,抄代码而已。
现代科学分工已经很精细了,想要有所成就,必须经过专门的训练+长期的努力研究,才有可能,嗯,就是可能,而不是必然。
- 一个小程序、一个系统的某个模块到了需要编码的时候,该如何设计实现呢?
本文讲的就是,在学习没有接触过的Python过程中,一项考核作业对我的启示。
作业不难,但要用过程化方法来实现(还没有讲到面向对象),自己编写函数实现重复利用。
我被难住了两周,既要工作又要学习,导致只想不做,而且是东一榔头,西一棍子的想,毫无节奏。
怎么办?经过痛苦的思考,终于憋出来了,但总结一下,发现走得还是原来的老路。
每次遇到难题都是这样没有过程、没有规律的乱想,最终还要按规律来思考和实现。
那么规律是什么呢?
- 分层,对于复杂功能实现要分层设计。为什么这次没有做到呢?因为Python是我没接触过的,而在以前进行Java开发时,采用的是框架,自己就强迫自己分层了
- 画流程图,对于一时想不起如何分层的功能要画流程图,按照流程实现。先分功能、再分析实现、最后提炼可共用部分(重构)
- 根据计算思维来进行程序开发工作,或者更简单点,采用标准化程序设计方法,具体来说就是五点:问题描述、数学建模、算法设计、程序设计、测试运行
- 那么思考和实现的是什么?其实是算法,或者这么说太高端了,就是怎么解决核心难点,那就采用算法的描述方法就可以了,四种方法:自然语言、流程图、N-S图、伪代码。
- 如何应用?自然语言(注释);流程图(或N-S图)(整理思路);伪代码(程序实现结构);具体实现。
- 步骤:
- 自然语言描述——写用例
- 画流程图——在纸上——逐步实现规整——归档
- 写注释——在代码中
- 伪代码
- 实现
- 测试
- 修改错误
- 思考有没有更好的方式
- 重构
- 总结:计时、记录
看到这里你会发现,这真是老生常谈,多少大师都说烂了的事情了,可还是重蹈覆辙。为什么?
- 学习掌握程度不够,连如何实现都力不从心,谈何熟练设计
- 重构能力差
- 经常会有几种实现方法(例如:是按照功能来分层还是按照层来分功能,按功能分层,就是一个功能中分数据访问层、逻辑层、控制层,而层中分功能则相反;还有,层中再划分功能,还是层中把所有功能罗列在一起?),但不知道那种最好,犹豫不决,遇到这种情况,先实现了再说,其他的记下来,以后再验证