当前位置:C++技术网 > 资讯 > 软件开发经验点滴 - 事先做好设计并写出流程

软件开发经验点滴 - 事先做好设计并写出流程

更新时间:2015-06-23 19:48:47浏览次数:1+次

    对于软件开发,设计的重要性起其实不言而喻。然而,真正重视的初级程序员却不多。当然对于有着丰富开发经验的程序员,就自然明白其中的道理。
    为什么初级程序员会不重视设计呢?问问自己就知道答案了。不管你现在是不是初级程序员,但是我相信,你肯定会经历初级程序员的过程。在这个阶段,常常有一个误解,那就是,我写小程序时用脑子一过就知道流程了,用不着写设计,也用不着在纸上写出流程图,如果项目很大,自然会写好流程设计图。但是,事实并非如此。
    “麻雀虽小五脏俱全”的道理相信你肯定懂。我不是建议你去将整个软件的流程一步步写的很清楚,完全按照软件工程的方法写出一份设计。当然,如果你想写,也是很有好处的。相信写多了设计,会积累大量设计经验,会为以后设计大项目积累宝贵经验。这是设计,与编写代码无关。但是我们大多数人做软件,也不愿意写文绉绉的设计书。我个人觉得,对于一个小软件,不用写很多设计,虽然写详细设计是有好处的,但是要花时间去整理。一般能够通过脑子快速过一遍的程序,就不用写的很详细。但是步骤多了,感觉有点多时,这时需要注意了。
    我个人建议,在开发一个模块或者一个函数中步骤多点的,都需要写流程。流程分为两类,一个是操作流程,一个是程序内部功能流程。特别是,操作流程有前后关联时,如前面的步骤会影响后续的操作时,请一定要写好操作流程,然后再根据操作流程简要的写好程序功能实现逻辑流程,一定要写出来。对于很多步骤的过程,先在程序中先写好步骤注释,每一步做什么,表上序号。逻辑上没问题了,再开始动手写。写出来流程图目的是为了在开发过程中始终清楚你的流程,不至于模糊。步骤太多,会增加你的记忆负担,写好逻辑流程后,在每一步中,你只要做好这一步的工作即可,不用记住全部的步骤。当然,每一步需要什么,输出什么,都是在设计流程时设定好,千万不要在写代码时临时想。这样很容易会给全部的流程造成破坏,带来BUG,或者隐藏的BUG,对日后维护造成困难。而在设计阶段,反复的验证,直到逻辑没问题。
    而写设计的另外一个好处就是,很多时候,因为水平有限或者疏于考虑,结果在开发过程中发现之前想的不对,需要调整思路。如果此时没有写好设计思路,然后轻易去改,很容易因为记忆失误导致带来额外的问题。这里提醒一下,在一些特别的方案,一定要标好原因,比如因为下面一个步骤导致上一个步骤必须是这样,一定要在上一个步骤标好这个原因,否则之后维护很容易忽略这个原因,结果又导致后面的问题出现,这样反反复复的调试,大大降低了效率。一个原则就是,特别情况特别原因一定特别标注说明。写好了设计,之后发现设计不对的时候,根据这个设计再来整体调整,这样就可以大大降低调整后带来新问题的不足。
    当然,有时候是因为一个技术问题,本来也不是很难,但是自己不会,很可能就懒得去研究,想绕开。在练习的时候,为了真正提高一个技术,一定不要逃避问题,要查阅资料将这个问题克服,否则日后会给自己带来心理阴影。但是要注意一点,如果是给客户做软件,重视的是业务逻辑,此时如果因为时间要求紧迫,可以调整思路,以实现业务功能为主。事后单独解决这个问题而不要影响项目进度。
    为了降低调试的难度,一定要做到,减小测试单元。也就是说,写完一个小模块或者一小段代码,就测试一下,而不要等整个模块写完再测试,特别是步骤性很强的,前后关联很大,前面一步是后面一步的基础时特别要这样。如果代码多了,测试起来问题找起来比较慢,而每步保证功能正确,才可以保证所有的都正确,也就减少了调试代码的时间,要知道软件开发多数时间是在调试,而不是写代码,如果通过好的习惯可以大大降低调试的时间,也就是大大提高了软件开发效率,何乐而不为呢。
    在调试别人代码寻找错误时,不要存在侥幸心理,通过改写参数之类的碰。至少要知道哪个模块是干什么的,尽量将代码都看懂,这样才可能从根本上解决问题,而如果是碰运气,说不定问题是解决了,但是却带入了更多的问题,不要轻易改掉一个已经写好的代码,当然这个功能平时运行是正常的。如果调试过程中出现了一个新问题,不要忽略它,要找出问题的原因,原则是找到一个解决一个,至少要确定问题所在,否则日后很可能还会出现。
    总的来说,作为一个软件,是开发出来使用的,那么在开发前首先要能够写出逻辑上运行通过的。如果开发前这个逻辑都不正确,不要妄想开发完后能够正常运行,总会出现各种各样的问题,一定要先保证逻辑运行正确。如果出现几个逻辑流程都可以的时候,客户也没有硬性规定,那么自己一定要先制定一个规则,且一定要在逻辑上保证自己的程序是按照自己的逻辑运行的,不要出现跑飞的情况,对用户体验很不好。软件的最基本的目标是完成基本功能和稳定运行,在这个基础上在考虑增强,否则动不动就崩溃的软件,几个人会使用呢?
    这些都是自己开发过程中碰见的,也是自己在没有确定流程时总是飘忽不定,一时按照这个流程一时按照那个流程做,结果都做不好。而听同事的建议,定出一套逻辑并实现它就可以了。这样就可以将所有流程控制在自己的范围内,不会出现出现不可预见的错误。