`

敏捷软件开发阅读笔记一

阅读更多

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

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

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

分享到:
评论

相关推荐

    敏捷软件开发:原则、模式与实践.pdf

    关于软件开发方面的书籍真的不少,但是当你实际开发中想要用上你书本的知识的时候将有很大差距,本书就是将过程方法、实践及设计原则有机的结合起来让他们发挥最大的效用

    敏捷软件开发原则模式与实践读书笔记3.pdf

    敏捷软件开发原则模式与实践读书笔记3.pdf

    《敏捷软件开发(原则模式与实践)》读书笔记

    由于书是由英文书籍翻译,读起来会难免拗口,本次分享是由《敏捷软件开发》结合网上相关资料总结而成。瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果...

    软件项目管理笔记:敏捷项目管理.pdf

    软件项目管理笔记——敏捷项目管理

    敏捷测试学习笔记.pptx

    敏捷测试是指敏捷开发模式下的一套完整的软件测试解决方案,它强调: “与开发协作”、 “自动化测试”、 “客户思维”、 “动态的测试策略调整”。

    软件工程黑书考研一轮复习笔记.docx

    6、敏捷开发过程(Agile Development) 10 第三章 需求分析 11 1、需求分析的概念 12 2、需求分析的过程:需求确认与需求变更 12 3、需求确认的步骤:需求获取→需求提炼→需求描述→需求验证 13 4、需求分析三类...

    启示录学习笔记.docx

    如何将敏捷方法融入产品开发?过去二十多年,Marty Cagan作为高级产品经理人为多家一流企业工作过,包括惠普、网景、美国在线、eBay。他亲历了个人电脑 、互联网、 电子商务的起落沉浮。《启示录:打造用户喜爱的...

    JAVA 学习/工作 笔记

    J2SE/J2ME/J2EE/JAVA代码优化/Flex(BlazeDS、PureMVC等技术)/LDAP/C++/Portal/即时通讯/数据建模/UML/UML设计工具(Rose、EA、PD等)/移动办公(Android、Symbian、Wap等技术)/项目管理(敏捷开发等)/软件架构...

    JAVA 五年的工作经验和学习笔记

    J2SE/J2ME/J2EE/JAVA代码优化/Flex(BlazeDS、PureMVC等技术)/LDAP/C++/Portal/即时通讯/数据建模/UML/UML设计工具(Rose、EA、PD等)/移动办公(Android、Symbian、Wap等技术)/项目管理(敏捷开发等)/软件架构...

    高效程序员的45个习惯-读书笔记

    自己总结的《高效程序员的45个习惯》,把书中自己感觉较好的段落摘抄下来,稍稍加了点自己的想法,挺好的...

    asp.net知识库

    技术基础 New Folder 多样式星期名字转换 [Design, C#] .NET关于string转换的一个...C#+ASP.NET开发基于Web的RSS阅读器 ASP.NET RSS Toolkit(RSS工具) Serialize Your Deck with Positron [XML Serialization, XSD, C#]...

    prez-software_craftsmanship:关于软件Craft.io的演讲幻灯片

    关于软件Craft.io以及成为专业开发人员意味着什么的演讲。 查看幻灯片 gh-pages 分支托管在 github.io ( ) 演讲者笔记 观看幻灯片时,按 's' 以获取带有我的笔记(法语)的演讲者视图。 分行 gh-pages : 主分支 2013...

    Engineering_84_business_week

    答:敏捷是一种用于项目管理和软件开发的迭代方法,可以帮助团队更快,更轻松地为客户提供价值。 敏捷团队没有将所有事情押注在“大爆炸”发布上,而是以较小但可消耗的增量交付工作。 实施它的一些好处包括由于...

    【最新版】VMware-Fusion-7.1.3-3204469.dmg【亲测可用】最好的适用于 Mac 的简单强大的虚拟机

    Fusion Pro 现在包含了一个 RESTful API,可用于与 Docker、Vagrant、Ansible、Chef 等新式开发工具集成,以将 VMware 的强大功能注入当今以敏捷性和 DevOps 为导向的生产管道。 可设计和演示复杂的解决方案 凭借...

    《重构_改善既有代码设计》观后感PPT

    【美】马丁福勒 著 是国际著名的面向对象分析设计、UML、模式等方面的专家,敏捷开发方法的创始人之一 重构_改善既有代码设计 软件工程领域的超级经典巨著,与另一巨著《设计模式》并称"软工双雄

    devops-knowledge-portfolio:devops工作的知识注释

    这对于提高敏捷性很重要,因为在需要进行故障排除时,供应商是一种孤岛。 使用Ubuntu和Node.js作为核心平台技术。 他们已经足够成熟,并拥有热心的社区来解决问题。 关于人机界面设计的研究。 人们使用诸如代码,...

    Sistema de gerenciamento acadêmico:与软件设计学科相关的工作-开源

    从事软件设计学科的工作,由信息系统-UFSM第7学期组,CESNORS校区,Cristiano Bertolini教授开展。 成员:Francieli Zanardi、Luis Henrique Forchesatto、Mauro Murari 和 Marcelo Garbin。 该系统被命名为SGA,即...

    头条java笔试题-EquineHoroscope:赛马的算命

    年代中期的一本软件开发书中得到了这个项目的想法,但我一直无法确定这本书。 或许,那是一场梦。 我已经多次构建了这个系统的部分,计划将它用于演示和课程。 然而,它已经过时了。 工具变了,库变了,计算环境变了...

    VMware-Fusion-11.5.3-15870345.dmg 适用于Mac的功能强大的简单虚拟机

    Fusion Pro现在包括一个RESTful API,可与Docker,Vagrant,Ansible,Chef等现代开发工具集成,以将VMware的功能融入当今面向敏捷和面向DevOps的功能 生产管道。设计和演示复杂的解决方案能够在单个Mac上运行整个...

Global site tag (gtag.js) - Google Analytics