`
My_Choice
  • 浏览: 39429 次
  • 性别: Icon_minigender_1
  • 来自: 河北保定
文章分类
社区版块
存档分类
最新评论

理想的软件设计标准

 
阅读更多

     前几天一个朋友提到我的博客中空空如也。确实,到园子里也有段日子了。确实也该放点东西了。要不也太对不起DUDU了。这几天又比较清闲,将读书笔记及自己的心得记录下来
     McConnell 大侠说如果设计能实现如下目标,那么就是非常好的设计了。
    一:最少的复杂度
        简单来说,就是要易于理解。McConnell特别还指出了要避免“聪明的”设计。  另外我们在设计某处的时候要能够安全的忽视其它部分才算合格。
   二:易于维护
       这点主要是为做维护工作的程序员着想的,不过我们写的代码,大多数时候做维护的还是自己吧。如果你能一看函数名或代码就能了解它们的作用的话也就OK了。
   三:松耦合
      作为软件设计的军规之一。各部分的关联越少意味着你在测试,集成,维护的时候可以轻松不止一点点。
   四:可扩展
      套用句"古话":做软件唯一就是变化。如果你的作品是不可适用变化的话,基本上就可以贴上不合格的标签了。也许你会说我改代码就可以了。当然可能要修改代码,但面向对象的设计原则里有条,类是可扩展还不可以修改的。扩展一般是通过继承来是想的。而修改特别是接口往往会引起许多莫名其妙的问题的。总之:你在给自己软件加功能的时候不要对底层甚至架构大动干戈就对了。
   五:高扇入
     扇入?扇入是什么东东?我以前还真不知道(我专业是物理学,半路出家写代码的!)仔细一看原来就是指被其它类或方法引用。那高扇入也就是说你这个类/方法...被很多其它类引用了。也就是利用率很高了。按照我的想法如果段代码我连写了三次,我就会把它单独作为一个方法或类
   六:低扇出
      扇出自然就是引用其它类或方法了.按Bob大叔的说法,扇出越高,类就越不稳定,因为任何一个引用对象出问题了,这个类也就会出问题。另外McConnell 说了:引用超过约七个就算高扇出了.
  七:可移植
      这点我觉得大家设计的时候还是得MVC啊。要不哪天客户要求你从B/S转为C/S你就有的忙了。这点我觉得喜欢在页面写逻辑的兄弟得特别注意了。虽然看起来没有双击就写代码那么爽,可实际还是能省不少事的。
  八:精简性
     能少不多,你不能觉得工厂模式爽,就有事没事都加上,这是不对的。另外写《移山之道》的邹欣也说过,程序员不能觉某个功能可能有用你就加上.因为这会增加测试等方面的任务,而且程序员认为用户会喜欢的往往用户偏不喜欢
  九:层次性
     层次性,最常见的就是大家说的三层架构了。好处有几个,你换了数据库而不必管上层。另还有一个就是更好的分工。经验不足的小伙子写的初级代码可以禁闭起来。以后想重构就重构,想换掉就换掉。也就减少了复杂度了。
  十:使用标准技术
     这样会给大家熟悉的感觉.如使用相同的框架,代码风格应该使用相同的标准,可以套用设计模式的就套用一下咯,不要自己整个新的花样出来,毕竟看熟悉的东西容易理解。
   
     代码大全上就这么十点,我觉得还可以加上一点,
   十一:高内聚
       也就是说一个类特别是一个方法应该专注于一件事。比如你的 I男朋友可以有陪女朋友()方法,但就不可以有写代码()方法。因为写代码()方法是I程序员接口才有的.
      而在陪女朋友()方法中你不可以顺便就将花钱这个操作加在里面,因为偶尔有一次陪女友是陪她在家看电视的,自然也就不需花钱了.
分享到:
评论

相关推荐

    软件设计师习题集

    《软件设计师习题集》是一本专门为准备软件设计师考试的人士设计的参考资料。...该习题集是软件设计领域专业人士自我提升、系统复习的理想工具,对于想要在软件设计领域深耕的人来说,无疑是一份宝贵的资源。

    软件设计师考试同步辅导上午科目

    《软件设计师考试同步辅导上午科目》是一本针对软件设计师资格认证考试的重要参考资料,尤其适合准备参加软考的考生。此书全面覆盖了上午科目的所有关键知识点,旨在帮助考生理解和掌握考试大纲中的各项要求,提高...

    2023下半年软考中级软件设计师试题及答案解析.zip

    《2023下半年软考中级软件设计师试题及答案解析》是针对全国计算机技术与软件专业技术资格(水平)考试(简称“软考”)中级软件设计师科目的重要参考资料。软考是中国信息技术领域的一项权威认证,旨在考核应试者在...

    2023软件设计师笔记

    这份笔记涵盖了软件设计的基础概念、关键技术和最新趋势,是提升软件设计技能的理想参考资料。 首先,笔记中可能涉及了软件设计的基础理论,包括软件生命周期(Software Development Life Cycle, SDLC),它通常...

    软件设计师模拟真题考试软件+备考书籍

    【软件设计师模拟真题考试软件】是针对软件设计师这一职业资格认证...总的来说,软件设计师的备考过程需要理论学习与实践相结合,利用好模拟考试软件和备考书籍,持续不断地练习和复习,才能在实际考试中取得理想成绩。

    2020年软考软件设计师历年真题

    软件设计领域知识更新迅速,考生需要保持对新技术、新标准的关注,及时更新自己的知识库。同时,关注考试政策变化,确保备考方向的准确性。 综上所述,《2020年软考软件设计师历年真题》不仅是一份宝贵的复习资料,...

    软件设计师考试复习资料汇总

    每一个主题都可能有专门的讲义进行详细讲解,包括采用的工具、遵循的标准、实现的方法等,旨在帮助考生构建起完整且深入的软件设计知识体系。 “软件设计师(12个)专题讲解”部分,则是针对软件设计中的一些高级...

    2017年下半年软件设计师(上午+下午)真题及答案解析 高清

    【软件设计师】这一职业资格认证是中国计算机技术职业资格认证体系中的一个重要组成部分,旨在评估和确认从事软件设计与开发的专业人员的技术能力和素质。2017年下半年的软件设计师考试分为两个部分,即【上午】和...

    O型圈设计软件

    4. 槽设计:软件提供槽尺寸建议,确保O型圈安装后能获得理想的密封效果。 5. 应用模拟:部分高级软件甚至能进行动态模拟,预测O型圈在不同工况下的性能表现。 三、O型圈设计软件的实际应用 在机械设计中,O型圈...

    软考中级软件设计师第五版2018年最新版附带答案详解

    《软考中级软件设计师第五版2018年最新版附带答案详解》是一份针对计算机软件资格(水平)考试的复习资料,旨在帮助备考者系统性地掌握和理解软考中级软件设计师所需的知识点。这份资料以高清PDF格式提供,内容丰富...

    软考软件设计师试题

    【软考软件设计师试题】是针对国家计算机技术与软件专业技术资格(水平)考试中的软件设计师这一级别的考试资源。这个资源通常包含历年的考试试题,旨在帮助考生熟悉考试格式,掌握必要的知识点,提升备考效率。 ...

    全真模拟试卷—软件设计师

    总的来说,这份《全真模拟试卷—软件设计师》资源包提供了一个全方位的复习平台,通过模拟实战,考生可以不断测试和提升自己的技能,以期在实际考试中取得理想的成绩。在使用过程中,考生应仔细阅读并遵循模拟试题的...

    软件设计师考试真题 软件设计

    软件设计师考试是全国...通过上述知识点的学习和实践,考生能够全面提高自己的软件设计能力,从而在软件设计师考试中取得理想成绩。准备过程中,考生应注重理论与实践相结合,通过做历年真题来检验和巩固所学知识。

    2014年上半年 软件设计师 考试真题 上下午

    【软件设计师考试】是中国计算机技术职业资格考试体系中的一个重要级别,主要针对从事软件设计与开发工作的专业人士。2014年上半年的软件设计师考试分为上午和下午两个部分,旨在考核考生的专业理论知识和实际操作...

    中级软件设计师真题及答案(2009-2018)

    中级软件设计师考试是中国计算机技术职业资格认证中的一项重要考试,主要针对那些希望在软件开发、设计领域提升专业技能和获取职称的专业人士。本资源包含了2009年至2018年间历年考试的上午和下午全真试题以及答案...

    软件设计师最新版考试大纲

    通过深入学习这些内容,并结合实践操作,考生可以有效地提高自身在软件设计领域的专业素养,从而在考试中取得理想的成绩。《软件设计师最新版考试大纲》不仅是备考的指南,也是提升软件设计能力的宝贵资料。

    软件设计师历年真题全汇总(答案+解析)

    《软件设计师历年真题全汇总》是...总之,《软件设计师历年真题全汇总》是一份集实用性、全面性于一体的备考资料,为考生提供了一条高效的学习路径,有助于他们在考试中取得理想的成绩,顺利获得软件设计师的资格认证。

    2010软件设计师上下午试题和参考答案.

    【标题】"2010软件设计师上下午试题和参考答案"揭示了这是一份针对2010年度软件设计师资格认证考试的完整试题集...它能够帮助备考者全面掌握软件设计领域的核心知识,提升自己的专业素养,以期在考试中取得理想的成绩。

    软件设计师真题及答案(截止2009全部)

    《软件设计师真题及答案(截止2009...在备考过程中,除了研读真题集,考生还应结合教材、参考书籍、在线课程等多渠道学习,参加模拟考试,进行实战演练,以期在实际考试中取得理想成绩,成功获得软件设计师的资格认证。

Global site tag (gtag.js) - Google Analytics