登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秒大刀 博客

好好学习 天天向上

 
 
 

日志

 
 
 
 

读《代码大全2》第7部分 软件工艺  

2010-01-02 15:28:55|  分类: 读书 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

全部书摘参见 读《代码大全2》


第7部分 软件工艺

第31章 布局与风格
  1. 出色的程序员在布局实践方面应当头脑开放,接受已证实为更好的方法,即使调适过程最初会感觉有些不舒服。
  2. 程序中空行的最佳比例约为8%~16%,超过16%后调试时间将显著延长。
  3. Key Points:
    1. 可视化布局的首要任务是指明代码的逻辑组织。评估该任务是否实现的指标包括准确性、一致性、易读性、和易维护性。
    2. 外表悦目比起其他指标是最不重要的。然而,如果其他指标都达到了,代码又质量好,那么布局效果看上去也会不错。
    3. VB具有纯代码块风格,而java的传统做法就是使用纯块风格,所以若用这些语言编程,就请使用纯代码块风格。C++中,模拟纯代码块或者begin-end块边界都行之有效。
    4. 结构化代码有其自身目的。始终如一的沿用某个习惯而少来创新。不能持久的布局规范只会损害可读性。
    5. 布局的很多方面涉及信仰问题。应试着将客观需要和主观偏好区分开来。定出明确的指标,在此基础上再讨论风格参数的选择。

第32章 自说明代码
  1. 自说明代码:易理解性、易读性的最高水平。
  2. 在代码层文档中起主要作用的因素并非注释,而是好的编程风格。
  3. IBM:约每十条语句有一个注释,这样的密度时程序清晰度最高。
  4. 对数据注释比对使用数据的过程作注释更重要。
  5. Key Points:
    1. 该不该注释是个需要认真对待的问题。差劲的注释只会浪费时间,帮倒忙;好的注释才有价值。
    2. 源代码应当含有某个程序大部分的关键信息。只要程序依然有用,源代码比其他资料都能保持更新,故而将重要信息融入代码是很有用处的。
    3. 好代码本身就是最好的说明。如果代码太糟,需要大量注释,应先试着改进代码,直至无须过多注释为止。
    4. 注释应说出代码无法说出的东西——例如概述或用意等信息。
    5. 有的注释风格需要许多重复性劳动,应舍弃之,改用易于维护的注释风格。

第33章 个人性格
  1. 编程过程非常耗用脑力,这种特性使得个人性格显得很重要。
  2. 编程工作本质上是项无法监督的工作,因为没有人真正清楚你正在做什么。
  3. 个人性格对于造就出程序员高手具有决定性意义。
  4. 如何专注你的聪明才智,比你有多聪明更重要。
  5. Dijkstra:大部分编程工作都旨在弥补我们有限的智力。精通编程的人是那些了解自己头脑有多大局限性的人,都很谦虚。而那些编程糟糕的人,总是拒绝接受自己脑瓜不能胜任工作的事实,自负使得他们无法成为优秀的程序员。承认自己智力有限并通过学习来弥补,你会成为更好的程序员。你越是谦虚,进步就越快。
  6. 程序员都是大忙人,常常没有时间去考虑怎样改进自己的工作。
  7. 在开发过程中建立自我意识。你越了解软件开发过程,无论通过阅读还是通过自己对软件开发的观察,你就越能理解变化,使团队朝着正确的方向发展。
  8. 如果分配给你的工作净是些不能提高自身技能的短期任务,你理应表示不满。如果在工作中学不到什么,就找一份新工作吧。
  9. 假如不坚持学习,你就会落伍。
  10. 有效编程的关键之一就是要学会迅速制造错误,并且每次都能从中有所收获。犯错不是罪过,从中学不到什么才是罪过。
  11. 解决问题是软件创作过程中的核心行为。
  12. 就算你想再发明个车轮,也不会注定成功,你发明的也许是方车轮。
  13. 只要稍微看一些书就会使你的专业知识又迈进一步。如果每两个月能看一本计算机好书,大约每周35页,过不了多久,你就能够把握本行业的脉搏,并脱颖而出。
  14. 好的程序员总是不断寻找机会来提高自己。
  15. 专业开发阶梯:
    1. 第一级:入门级。入门者会利用某种语言的基本功能,能够编写类、子程序、循环和条件语句,会使用语言的许多特性。
    2. 第二级:中级。中级的程序员已经度过入门级,能利用多种语言的基本功能,并会得心应手的使用至少一种语言。
    3. 第三级:熟练级。熟练级的程序员对语言或环境有着专业技能。这些程序员都是所在公司的活宝,很多程序员再也不能超越该层次。
    4. 第四级:技术带头人级。技术带头人具有第三级的专业才学。并明白编程工作中只有15%用来和计算机交互,其余都是与人打交道的。程序员一般只花30%的时间单独工作,与计算机交互的时间则更少。技术带头人会为人写代码,而非为机器。真正高手所写的代码,像水晶一样晶莹剔透,还配有文档。
  16. 编程生涯成熟的部分标志就是发展处一种不屈不挠的诚实感。
    1. 不是高手时不假装是高手。
    2. 乐于承认错误。
    3. 力图理解编译器的警告,而非弃之不理。
    4. 透彻理解自己的程序,而不要只是编译看看能否运行。
    5. 提供实际的状况报告。
    6. 提供现实的进度方案,在上司面前坚持自己的意见。
  17. 上司通常愿意得到对项目状态的真实汇报,即使那可能并非他们想听到的内容。如果你的汇报经过深思熟虑,应尽量冷静的在私下说出来。管理者需要准确的信息,以便协调开发活动,充分的配合是必要的。
  18. 妥协会让自己失去信用,而坚持观点可能会赢得尊敬。
  19. 编程首先是与人交流,其次才是与计算机交流。
  20. 不要将创造力花到无关紧要的事物上,在非关键之处建立规范,从而在重要地方倾力发挥你的创造性。
  21. 人们容易混淆行动与进展,混淆忙碌与多产。
  22. 坚持可能是财富,也可能是负担。
  23. 知道何时放弃很难,但这是必须面对的问题。
  24. 如果你不能与时俱进,经验不但不会有所帮助,反而是个累赘。
  25. 为了让自己仍然有用,你必须紧跟潮流。
  26. 如果你工作10年,你会得到10年经验还是1年经验的10次重复?必须检讨自己的行为,才能获得真正的经验。只有坚持不懈的学习,才能获取经验;如果不这样做,就无法得到经验,无论你工作多少年。
  27. 可以热爱编程,但热情不能代替熟练的能力。
  28. 初涉某事时,就应该端正态度来学。开始做事情时,你还会积极思考,轻松决定做的好坏。干了一段时间后,就会习以为常,“习惯的力量”开始起作用。请确保这些习惯是你所希望的东西。
  29. 不必为失去坏习惯而多虑,有了新习惯,坏习惯自然就会消失。
  30. Key Points:
    1. 人的个性对其编程能力有直接影响。
    2. 最有关系的性格为:谦虚、求知欲、诚实、创造性和纪律,以及高明的偷懒。
    3. 程序员高手的性格与天分无关,而任何事都与个人发展相关。
    4. 出乎意料的是,小聪明、经验、坚持和疯狂既有助也有害。
    5. 很多程序员不愿主动吸收新知识和技术,只依靠工作时偶尔接触新的信息。如果你能抽出少量时间阅读和学习编程知识,要不了多久就能鹤立鸡群。
    6. 好性格与培养正确的习惯关系甚大。要成为杰出的程序员,先要养成良好习惯,其他自然水到渠成。

第34章 软件工艺的话题
  1. 致力于降低复杂度是软件开发的核心。
    1. 在架构层将系统分为多个子系统,以便让思绪在某段时间内能专注于系统的一小部分。
    2. 仔细定义类接口,从而可以忽略类内部的工作机理。
    3. 保持类接口的抽象性,从而不必记住不必要的细节。
    4. 避免全局变量,因为它会大大增加总是需要兼顾的代码比例。
    5. 避免深层次的继承,因为这样会耗费很大精力。
    6. 避免深度嵌套的循环或条件判断,因为它们都能用简单的控制结构取代,后者占用较少的大脑资源。
    7. 别用goto,因为他们引入了费顺序执行,多数人都不容易弄懂。
    8. 小心定义错误处理的方法,不要滥用不同的错误处理技术。
    9. 以系统的观点对待内置的异常机制,后者会成为非线性的控制结构。异常如果不受约束的使用,会和goto一样难以理解。
    10. 不要让类过度膨胀,以至于占据整个程序。
    11. 子程序应保持短小。
    12. 使用清楚、不言自明的变量名,从而大脑不必费力太多的细节信息。
    13. 传递给子程序的参数数目应尽量少。更重要的是,只传递保持子程序接口抽象所必须的参数。
    14. 用规范和约定来使大脑从记忆不同代码段的随意性、偶然性差异中解脱出来。
  2. 降低复杂度是衡量程序员成果的最重要依据。
  3. 对于小的项目,程序员的个人才能对软件质量影响最大。对于多个程序员参与的项目,组织性和重要程度超过了个人技能。人们一起工作时的方式将决定其能力是珠联璧合还是相互抵挡。
  4. 规范是一套用于管理复杂度的智力工具。
  5. 如果没有充分了解问题就定下解决方法,说明你还不够成熟。受限于所坚持的思路,你很可能与最有效的方法失之交臂。
  6. Key Points:
    1. 编程的主要目的之一是管理复杂度
    2. 编程过程对最终产品有深远影响
    3. 合作开发要求团队成员之间进行广泛沟通,甚至同计算机的交互;而单人开发则是自我交流,其次才是计算机
    4. 编程规范一旦滥用,只会雪上加霜;使用得当则能为开发环境带来良好机制,有助于管理复杂度和相互沟通。
    5. 编程应基于问题域而非解决方案,这样便于复杂性管理
    6. 注意警告信息,将其作为编程的疑点,因为编程几乎是纯粹的智力活动。
    7. 开发时迭代次数越多,产品质量越好
    8. 墨守成规的方法有悖于高质量的软件开发。请将编程工具箱中填满各种编程工具,不断提高自己挑选合适工具的能力。

第35章 何处有更多信息
  1. 你犯的错误别人早已犯过,要是不想自讨苦吃,就读读他们的书吧,这样能够避免再走弯路,并找出解决问题的新方法。
  2. 阅读大纲:
    1. 入门级:
      1. 《Conceptual Blockbusting: A Guide to Better Ideas》
      2. 《Programming Pearls》
      3. 《Facts and Fallacies of Software Engineering》
      4. 《Software Project Survival Guide》
      5. 《Code Complete》
    2. 熟练级:
      1. 《Software Configuration Management Patterns: Effective Teamwork, Practical Integration》
      2. 《UML Distilled: A Brief Guide to the Standard Object Modeling Language》
      3. 《Software Creativity》
      4. 《Testing Computer Software》
      5. 《Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process》
      6. 《Rapid Development》
      7. 《Software Requirements》
    3. 专业级:
      1. 《Software Architecture in Practice》
      2. 《Refactoring: Improving the Design of Existing Code》
      3. 《Design Patterns》
      4. 《Principles of Software Engineering Management》
      5. 《Writing Solid Code》
      6. 《Object-Oriented Software Construction》

 

  评论这张
 
阅读(1268)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018