第四章关键的构建决策(代码大全2)

  一旦你能确定 “构建”的基础已经打好,那么准备工作就转变为针对特定“构建”的决策了。第3章“三思而后行:前期准备”讨论了设计蓝图和建筑许可证在软件业务里的等价物。你可能对那些准备工作没有多少发言权,所以在第3章关注的焦点是确定“当构建开始后你需要做什么”。本章关注的焦点是程序员和技术带头人个人必须(直接或间接)负责的准备工作。在向工地进发之前,如何选择适用的工作别在你的腰带上,你的手里车里应该装哪些东西?本章讨论的就是这事务在软件中的等价物。

4.1 选择编程语言(Choice of Programming Language)

  研究表明,编程语言的选择从多个方面影响生产效率和代码质量。

  程序员适用熟悉的语言时,生产效率比适用不熟悉的语言时要高。适用高级语言的程序员比适用较低级语言的程序员达到更好的生产率和质量。某些语言更能表达编程中的各种概念。

语言描述(Language Descriptions)

  介绍了很多种语言,在这里就不写了。

4.2 编程约定(Programming Conventions)

  在高质量软件中,你可以看到“架构的概念完整性”与“其底层实现”之间的关系。“实现”必须与(指导该实现的)“架构“保持一致,并且这种一致性是内在的、固有的。这正是变量名称、类的名称、子程序名称、格式约定、注释约定等这些针对”构建活动“的指导方针关键所在。

  在一个复杂的程序中,架构上的指导方针使得程序的结构平衡,针对”构建活动“的指导方泽则提供了底层协调,将每个类(Class)都衔接到一种完整的设计(comprehensive design)中,成为其可靠的部件。任何大的程序都需要一个控制结构,该结构可以统一编程语言的细节。大结构的部分魅力在于,各个具体部件都能反映整体架构的内涵。假如没有一个统一的规则,你创作出来得东西将会充斥着各种不同的风格,显得混乱和邋遢。这些不同风格使得你的大脑承受沉重的负担——着仅仅是为了理解不同编程风格之间的(本质是是随意的)差异。成功编程的一个关键就在于避免随意的变化,这样你的大脑可以专注于那些真正需要的变化。

  在”构建“开始之前,讲清楚你使用的编程约定。编码约定的细节要达到这样的精确度:在编写完软件之后,几乎不可能改变(翻译)软件所遵循的编码约定。本书随处都有这样的约定细节。

4.3 你在技术浪潮中的位置(Your Location on the Technology Wave)

  在我的职业生涯中,我看到了PC之星的升起和大型机之星的陨落,我看到图形用户界面代替了字符界面程序,我还看到了Web的崛起和Windows的衰落。我只能假设当你读到这本书的时候,又会有某些新的技术蒸蒸日上,而我今天(2004年所)知道的Web编程将会慢慢消失。这些技术周期(或者说是技术浪潮)意味着不同的编程实践,编程实践取决于你在技术浪潮中所处的位置。

  你如何面对自己的编程工作,取决于你在技术浪潮中所处的位置。如果处在浪潮的后期,你就可以计划用很大部分时间稳定持续的编写新功能。如果你处在浪潮的前期,可以预期你将要花很大一部分时间,用来找出文档中未加说明的编程语言特性、调试程序代码缺陷带来的错误、修订代码以适应厂商提供的新版本函数库等。

  如果你在一个很初级(简陋)的环境下工作,你会发现, 与成熟的环境相比,本书介绍的编程实践将更有帮助。正如David Gries所言,编程工具不应该决定你的编程思路(1981)。Gries对”在一种语言上编程(programming in a language)“做了区分。”在一种语言上编程“的程序员将他们的思想限制于”语言直支持的那些构建“。如果语言工具是初级的,那么程序员的思想也是初级的。

  ”深入一种语言区编程“的程序员首先决定他要表达的思想是什么,然后决定如何使用特定语言提供的工具来表达这些思想。

“深入一种语言去编程”的例子(Example of Programming into a Language)

  理解“在一种语言上编程”和“深入一种语言区编程”的区别,对于理解本书是至关中要的。大多数重要的编程原则并不依赖特定的语言,而依赖你使用语言的方式。如果你使用的语言缺乏你希望用的构件,或者倾向于出现其他种类的问题,那就应该试着去弥补它。发明你自己的编码约定、标准、类库以及其他的改进措施。

4.4 选择主要的构件实践方法(Selection of Major Construction Practices)

  "构件"有一部分准备工作,就是决定在这么多的可选的实践方法中,你想要强调哪些。某些项目使用结对编程以及测试驱动开发,而其他项目使用单人开发和形式化检查。这两种技术组合都有可能发挥作用,取决于项目的特定环境。

  下面的核对表总结了在“构建”过程中,应该有意识地使用或排斥的特定编程实践。这些实践的细节遍布全书。

核对表:主要的构建实践(Checklist:Major Construction Practices)

编码

  你有没有确定,多少设计工作将要预先进行,多少设计工作在键盘上进行(在编写代码同时)?

  你有没有诸如名称、注释、代码格式等“编码约定”?

  你有没有规定特定的由软件架构确定的编码实践,比如如何处理错误条件、如何处理安全性事项、对于类接口有哪些约定、可重用的代码遵循哪些标准、在编码时考虑多少性能因素等?

  你有没有找到自己在技术浪潮之中的位置,并相应调整自己的措施?如果必要,你是否知道如何“深入一种语言去编程”,而不受限于语言(仅仅“在一种语言上编程”)?

团队工作

  你有没有定义一套集成工序——即,你有没有定义一套特定的步骤,规定程序员在把代码check in(签入)到主源码(代码库)中之前,必须履行这些步骤?

  程序员是结对编程、还是独自编程,或者是这二者的某种组合?

质量保证

  程序员在编写代码之前,是否为之编写测试用例?

  程序员会为自己的代码写单元测试吗?(无论先写还是后写)?

  程序员在check in 代码之前,会用调试器单步跟踪整个代码流程吗?

  程序员在check in 代码之前,是否进行集成测试(integration-test)?

  程序员会复审(review)或检查别人的代码吗?

工具

  你是否选用了某种版本控制工具?

  你是否选定了一种语言,以及语言的版本或编译器版本?

  你是佛选择了某个编程框架,或者明确地决定不使用编程框架?

  你是否决定允许使用非标准的语言特性?

  你是否选定并拥有了其他将要用到的工具——编译器、重构工具、调试器、测试框架(test framework)、语法检查器等。

要点(Key Points)

  每种编程语言都有其优点和弱点。要知道你使用的语言的明确优点和弱点。

  在开始编程之前,做好一些约定(convention)。“改变代码使之符合这些约定”是近乎不可能的。

  “构建的实践方法”的种类比任何单个项目能用到的要多。有意识的选择最适合你的项目实践方法。

  问问你自己,你采用的编程实践是对你所用的编程语言的正确响应,还是受它的控制?请记得“深入一种语言去编程”,不要仅“在一种语言上编程”。

  你在技术浪潮中的位置决定了哪种方法是有效的——甚至是可能用到的。确定你在技术浪潮中的位置,并相应调整计划和预期目标。

  

第四章关键的构建决策(代码大全2)

时间: 2024-11-05 20:55:52

第四章关键的构建决策(代码大全2)的相关文章

关键的“构建”决策

每种编程语言都有其优点和弱点.要知道你使用的语言的明确优点和弱点. 在开始编程之前,做好一些约定(convention)."改变代码使之符合这些约定"是近乎不可能的. "构建的实践方法"的种类比任何单个项目能用到的要多.有意识地选择最适合你的项目的实践方法. 问问你自己,你采用的编程实践是对你所用的编程语言的正确响应,还是受它的控制?请记得"深入一种语言去编程",不要仅"在一种语言上编程". 你在技术浪潮中的位置决定了哪种方法

SpringBoot | 第三十四章:CXF构建WebService服务

前言 上一章节,讲解了如何使用Spring-WS构建WebService服务.其实,创建WebService的方式有很多的,今天来看看如何使用apache cxf来构建及调用WebService服务. 前言 一点知识 何为Apache-CXF 关于JAX-WS规范 常用注解介绍 SpringBoot整合CXF实例 服务端构建 客户端调用 异常捕获 自定义拦截器 服务端拦截器 客户端拦截器 参考资料 总结 最后 老生常谈 一点知识 何为Apache-CXF Apache CXF是一个开源的Serv

构建之法学习(第四章 两人合作)

第四章 两人合作 1.代码规范  1)代码风格规范.主要是文字上的规定,看似表面文章,实际上非常重要. *原则:简明,易读,无二义性 *缩进:4个空格 *行宽:行宽必须限制,可以限定为100字符 *括号:在复杂的条件表达式中,用括号清除地表示逻辑优先级 *断行与空白的{}行:推荐格式如下 if ( condition ) {        DoSomething(); } else {       DoSomethingElse(); } *分行:不要把多条语句放在一行上.并且,不要把多个变量定

2018--20179215--《构建之法(第三版)》第四章 两人合作

构建之法 第四章 读书笔记 4.1代码规范 代码规范可以分为两部分: 代码风格规范-主要是文字上的规定 代码设计规范-牵涉到程序设计.模块之间的关系.设计模式等方方面面的通用原则 4.2代码风格规范 代码风格的原则是:简明,易读,无二义性. 缩进:4个空格的距离阅读性最好. 行宽:可限制为100个字符. 分行:不要把多条语句放在一行,每个"{"和"}"单独占一行,不要把多个变量放在同一行. 命名:不要提到类型或其他语法方面的描述:避免过多的描述:避免可要可不要的修饰

《代码大全》阅读笔记-目录

第一部分:打好基础 第一章:欢迎进入软件构建的世界 第二章:用隐喻来更充分地理解软件开发 第三章:三思而后行:前期准备 第四章:关键的"构建"决策 第二部分:创建高质量的代码 第五章:软件构建中的设计 第六章:可以工作的类 第七章:高质量的子程序 第八章:防御式编程 第九章:伪代码编程过程 第三部分:变量 第十章:使用变量的一般事项 第十一章:变量名的力量 第十二章:基本数据类型 第十三章:不常见的数据类型 第四部分:语句 第十四章:组织直线型代码 第十五章:使用条件语句 第十六章:控

阅读《构建之法》第四章感想

课下阅读<构建之法>第四章,自己有以下一些感想. 1.我们写的代码最终都是要给人看的,所以代码规范化是一个优秀编程员必备的良好习惯,而且若是在团队里工作,那么代码规范更加重要.编程人员要遵循的代码风格的原则是:简明,易读,无二义性.以后自己要养成规范代码的习惯. 2.复审也是不可缺少的一个步骤,软件工程中最基本的复审手段就是同伴复审,找熟悉代码,有经验的人来进行复审. 3.当今时代,一个人能发挥的力量越来越小,团队的力量日渐重要,因此,如何合作,很关键.两个人合作,如何影响对方,要因人而异,因

读《构建之法》第四章 、第十七章

第四章    两人合作 通过对于<构建之法>第四章的阅读使我对代码规范 . 代码复审 . 以及结对编程有了更加深刻的认识,所谓代码规范可以分为两个部分,代码风格规范和代码设计规范,代码风格规范的原则是:简明 . 易读 . 无二义性,代码书写的形式,变量命名的方法,注释程序如何工作都有详细的介绍,令我受益颇多.代码设计规范不光是程序书写的格式问题,而且牵涉到咸亨需设计 . 模块之间的联系 . 设计模式等方方面面,函数的设计,语句的使用,错误的处理,这些都是我们在进行程序设计的时候需要注意的地方.

构建之法第四章学习心得

今天我学习了构建之法第四章,主要讲述了两人合作的理论和知识点.合作,无论在任何领域,都是不可缺失的,往往能产生不可替代的效果.同样在软件设计中也是如此,经过我的学习,我了解到软件设计中两人合作主要包括包括代码规范.极限编程.结对编两人合作的不同阶段以及影响他人的技巧. 其中最让我印象深刻的是代码规范.包括:代码风格规范和代码设计规范,代码风格规范主要是文字上的规定,看似表面文章,实际上非常重要:代码设计规范牵涉到程序设计.模块之间的关系.设计模式.等方方面面的通行原则: 同时,我了解了代码风格规

《构建之法》第四章

<构建之法>第四章讲的是两个人的合作.结对编程.结对编程往往只需花费大约一半的时间就能编写出质量更高的代码. 代码规范方面,在给函数或者类取名的时候要严谨,不能写一些没意义的名称:在一些代码后面可以加些注释来说明此行代码的作用,在复审方面,我觉得自我复审时最好的,刚写好的代码脑袋里印象深刻,能很好的解决逻辑错误和算法错误. 结对编程方面,书中生动形象的说明了开发者的搭档关系,在结对的时候怎么分配任务,怎么通力合作.互相帮助,在两人的合作过程中,怎么磨合.互相提高水平,在遇到问题或者矛盾的时候,