这一周,我开始阅读《代码大全》一书,下面将我本周阅读的收获与心得与大家分享一下。
第一章 欢迎进入软件构建的世界
本章首先介绍了什么是构建,在我看来软件的构建是由一些不同的活动组成的:
■定义问题
■需求分析
■规划构建
■软件架构或高层设计
■详细设计
■编码与调试
■单元测试
■集成测试
■集成
■系统测试
■保障维护
软件构建究竟为何如此重要?作者给了一系列的原因,然而我觉得主要原因还是构建活动是唯一一项确保会完成的工作,我们都知道一个理想的软件项目在构建之前是需要进行需求分析和架构设计的,而且在项目构建完成之后,也需要进行大量的系统测试和维护之后,才能让项目真正意义上的接近完美,但是有些程序员团队在进行项目开发时,经常会因为各种各样的原因没有足够的原因,所以他们就会选择跳过前期的一些准备工作,比如需求分析和架构设计,而是直接开始进行编码与调试。在这方面,我有着深切的体会,在上个学期的电子设计实践2一课程中,我们团队就因为一些原因没有进行架构设计,而是直接进入编程与调试的环节,虽然现在看来这种方式并不值得提倡,但是最终仍然可以将项目完成。同时,系统测试与维护的环节也是可以省略的,但是这就没办法保证开发出来的项目能够长久存活,有可能仅仅只存活几天就彻底失去用户了。然而,软件构建是无论如何也不能省略的,因为没有这一个环节的完成,就意味着整个项目的失败。
第二章 用隐喻来更充分地理解软件开发
这一章的内容我的感悟较少,主要是因为我对隐喻的概念没有太多的理解,只能大致谈一谈我的理解,如果有误,还希望各位方家指正。代码大全提出了隐喻的概念,合适的隐喻就是创建合适的模型,也就是建模的过程。正确的模型可以是你更加关注最应该关注的方面,而忽略其余次要的方面,它是启发性的。
第三章 三思而后行:前期准备
前期准备是十分必要的,因为如果没有充足的前期准备,最终的结果很有可能是失败的,这并不是耸人听闻,而是根据前人的经验得出的结论,所以邓老师就一直在强调我们要做好前期准备——第一步就是需求分析,因为如果没有准确分析用户的需求,也就意味着做出的网站或app没有抓住用户的痛点,所以使用的用户数量将不会特别多,而且有可能只是体验一下之后就放弃使用该产品了。
前期准备出了需求分析之外,还有架构设计这一环节,如果程序员在这一个环节上有缺陷,就会导致在后期进行代码的维护时有极大的麻烦,因为如果设计的架构比较混乱,再想往其中添加代码以实现更多的功能或者修复bug将会变得极其繁杂,因为混乱的架构往往会导致某几部分代码之间产生了耦合,再想添加会有特别大的工作量,程序员只能花费相当多的时间修改甚至是重新设计架构(这样耗费的时间将更多了)。我就有过这样的经历,一次在编程时,我为了追求速度,没有仔细地设计架构,这也就导致了我写出的代码出现了耦合,当我debug和添加代码时非常的麻烦,我为了修复一个输出次序的小问题就花了三四个小时才解决掉。
那么如何才能设计较好的架构呢?在编程之前,程序员可以在心中思考以下问题:程序如何组织,每个模块间如何通信,每个模块都负责什么?主要的类有没有定义出来,主要的数据是哪些?需要用到哪些数据结构?大体的用户界面有没有设计出来?有没有考虑到安全性的问题?有没有检测用户输入的数据是否合法?......我想,程序员如果再编程之前能把这些问题都回答出来,那么就能设计出较为优异的产品。