今天看的是<敏捷软件开发:原则、模式与实践>的第七章, 读到7.2节中的软件设计的臭味---腐化软件的气味。
其中说到:当软件出现下面任何一种气味时,就表明软件正在腐化。
     僵化性:很难对系统进行改动,因为每一个改动都会迫使许多对系统其他部分的其他改动
     脆弱性:对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题
     牢固性:很难打开系统的纠结,使之成为一些可在其他系统中重用的组件
     粘滞性:做正确的事情比做错误的事情更困难
     不必要的复杂性:设计中包含有不具有任何直接好处的基础结构
     不必要的重复:设计中包含有重复的结构,而这些重复的结构可以用单一的抽象进行统一
     晦涩性:很难阅读、理解。没有很好地表现出意图

     以上这些所谓的“气味”是摘自《敏捷软件开发:原则、模式与实践》这本书中,以下是我对这些不良的设计习惯的一些感想。
     做为一个设计或编程人员,总是会有这样那样的不良习惯,导致一个软件总不能以让人满意的原型出现。
     对于僵化性,很多开发人员在设计之初没有考虑充分,很多功能的实现只是满足于能达到最后的效果,对于代码的优化和结构的设计,都只是放在靠后的位置,这样做往往是带来了无法预料的后果。当他用要修改其中的一小部分时,会发现,其实还需要同时修改更多其他部分的代码。。。如此之累,何苦啊。。。 
      对于脆弱性,一个地方出现改动时,会有其他更多的无关的地方需要进行改动,开发人员往往知道这些地方需要重新设计,却又都懒得对它进行重新设计,这样的后果,可想而知。平时的开发过程中,我们的团队也常常遇到这样的问题,明明知道有些地方不是很完美,需要重新设计,可是谁都没有这样的耐心,宁愿不断地对它打“补丁”,也不愿放弃不合理的设计,重新来过。。。悲哀啊。。。
     对于牢固性,系统中常常会包含一些对其他系统有用的部分,但是想从中将它独立开来又是一件很困难的事情,这真的是一件可悲的事。在我们的团队开发过程中,往往会设计出一些很有用的系统部分,虽然不是太大,功能也不是太多,可却是一些很通用的部分,偏偏很少有人想着将这些部分独立开来成为一个单独的“部件”,为今后别的系统做准备。这样的后果,当然是每次都要重新写代码,重新考虑整合。。
     对于粘滞性,这一点,目前没有太多的体会,先不引入我的想法。。。
     对于不必要的复杂性,在实现系统功能的时候,常常会引入一些不会用到的部分,也许在设计之初并不会考虑到这些,可在集成一个个功能的时候,仔细检查,往往会发现很多这样的部分存在。一些绝对不会用到的结构,我想这应该是很多开发人员会犯的错。我们的团队,也常常会犯这样的错。
    对于不必要的重复,这一点,从字面上就解释的很清楚了。没有必要再在这里引入太多的想法,对于这一点,我想开发人员应该要有个良好的开发习惯,让自己的代码更简洁。
    对于晦涩性,开发人员的代码总是会因为个人风格的不同而产生千百万种的代码格式。虽说这也是可以理解的,但往往因为这样,很多代码变得不易读,甚至是读不懂。从我开始编程开始,就一直有这种体会。在初学阶段,总是只注重结果,不关心自己的代码格式。现在看来,那些代码真的是毫无可读性。后来的一段时间里,接触了一些人,一些书,影响了我的习惯,也许,今后要更加改进代码风格。。。

     这些想法,只是我的一些个人想法,对于这本书,一句评价:是本好书。。。