读《构建之法》后的疑惑
1.我在读到第2页时,我看到这一段文字:阿超要不断地根据客户们的要求修改完善自己的程序,我们可以看出,客户对阿超的要求从一个简单的程序,扩展到一个满足各种功能的应用软件,再扩展到一个能保证服务质量的软件服务,有这个问题 ,软件团队的成员每天都在修改各种源代码,怎么保证软件在修改的过程中不断提高,至少要维持以前的质量?我查了资料,有这些说法: 高效的软件开发团队是建立在合理的开发流程及团队成员密切的合作的基础之上的,成员共同的迎接挑战、有效的计划、协调和管理各自的工作以至完成明确的目标。 据我的实践,我得到这些经验:软件是一个根据客户要求不断跟新,与时俱进的,作为软件工程的学习者,我应该认真的看待每一个相关软件问题。但是我还是不太懂,我的困惑是,那么我们之前编写的那些软件就毫无意义了吗?
2.我看了这一段文字现代软件产业经过几十年的发展,一个软件有一个人单枪匹马完成,已经很少见了,软件在相互的合作中完成,合作最小的单位是两个人,两个工程师在一起,做的最多的事情就是“看代码”,每个人都能看“别人的代码”,并对发表意见。有这个问题 程序员写的代码是给人看的,还是机器看的? 我查了资料,有这些说法:人在看,机器也看,但最终是人在看,我们的代码要让旁观者看的“清清楚楚”,根据《计算机程序的构造和解释》(简称为SICP),这本书提到,代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已。如果代码是写给机器看的,那完全可以使用汇编语言或者机器语言(二进制),直接让机器执行。我觉得:高级语言(java,php等都算),之所以被称为是高级语言,是相对汇编和机器指令而言的,他们更加可阅读性,更加符合人类语言的阅读习惯。低级语言让人看起来非常吃力,不容易编写,所以产生高级语言,容易上手点,代码是写给人看的,所以要做到良好的编程风格,方便其他程序员阅读,维护。所以这点我非常感悟,这确实是一个有力的证据。代码的可读性非常重要:注释,空白对其,工整都是风格的提现。保持这些编程风格最终目的只有一个:方便人类阅读。诚然,就算你不按照好的风格来编写,编译器也能识别,通过编译。但基于可阅读性、方便维护考虑。程序员还是要有良好的编码风格。但是我还是不太懂,我的困惑是,代码量小的话,可以独自一人完成,但代码量极大的时候,则就需要多人协作完成代码的编写,那么,在人和人不一样,在和别人合作的时候,要如何做到个人的表达观点的方式和思考的方式保持一致呢?
3.第11章中,有下面这样一段内容 “5. 写好代码后,小飞对照设计文档和代码指南进行自我复审,重构代码。” 对于代码重构不是很清楚。我查了一些资料,都在强调着重构的好处,因为软件产品最初制造出来,具有良好架构的。但是随着时间的发展,需求发生变化,为了实现变更,不可避免的要违反最初的设计构架。经过几次修改后,软件的架构就千疮百孔了,并制约着新功能的实现等。最后新需求的开发成本会超过开发一个新的软件的成本,而导致这个软件的死亡。而重构在“软件系统的过程, 它不会改变代码的外部行为, 同时改善其内部结构。 这是一种严格的清理代码的方法, 它可以最大限度地减少引入错误的可能性。 本质上, 当重构代码时, 是在编写代码之后改进它的设计”但是我对于具体的情况依然不是很了解,重构是对于旧的架构进行修改,来满足新的需求,那是否只是使用现在积木(代码)搭建一个更漂亮更优秀的大楼呢? 何时应该进行重构呢?