读代码大全2——第四章 关键的“构建”决策

在Visual Basic的早期,我想把产品中的业务逻辑、用户界面、数据库分离开,因此,我才用了一种设计约定,即只允许.frm文件(窗体文件)从数据库中读取数据或者将数据存入数据库。不允许数据直接通向程序的其它部分。每个窗体都有一个IsFormCompleted()子程序,其它子程序调用它来判断当前激活的那个窗体是否已经保存了自己的数据。IsFormCompleted()是窗体允许拥有的唯一的公用(public)子程序。同时不允许窗体包含任何业务逻辑。所有其它代码必须放在对应的.bas文件中,包含检查窗体中数据的有效性的代码。
Visual Basic并不直接支持这种约定,但是我使用了这一简单的编程约定—— 深入一种语言去编程——补偿了语言当时的结构缺陷,并且使得该项目易于管理。
理解“在一种语言上编程”和“深入一种语言去编程”的区别,对于理解本书是至关重要的。大多数重要的编程原则并不依赖特定的语言,而依赖于你使用语言的方式。如果你使用的语言缺乏你希望用的构件,或者倾向于出现其他种类的问题,那就应该试着去弥补它。发明你自己的编码约定、标准、类库以及其他改进措施。

核对表:主要的构建实践
编码
  • 你有没有确定,多少设计工作将要预先进行,多少设计工作在键盘上进行(在编写代码的同时)?
  • 你有没有规定诸如名称、注释、代码格式等“编码约定”
  • 你有没有规定特定的由软件架构决定的编码实践,比如如何处理错误条件、如何处理安全性事项、对于类借口有哪些约定、可重用的代码遵循哪些标准、在编码时考虑多少性能因素
  • 你有没有找到自己在技术浪潮中的位置,并相应调整自己的措施?如果必要,你是否知道如何“深入一种语言去编程”,而不受限于语言(仅仅”在一种语言上编程“)
团队工作
  • 你有没有定义一套集成工序——即,你有没有定义一套特定的步骤,规定程序员在把代码check in(签入)到主源码(代码库)中之前,必须履行这些步骤
  • 程序员是结对编程、还是独自编程,或者这二者的某种组合
质量保证
  • 程序员在编写代码之前,是否先为之编写测试用例
  • 程序员会为自己的代码编写单元测试吗(无论先写还是后写)
  • 程序员在check in代码之前,会用调试器单步跟踪整个代码流程吗
  • 程序员在check in代码之前,是否进行集成测试(integration-test)
  • 程序员会复审(review)或检查别人的代码吗
工具
  • 你是否选用了某种版本控制工具
  • 你是否选定了一种语言,以及语言的版本或者编译器版本
  • 你是否选择了某个编程框架(framework,如J2EE或者Microsoft .NET),或者明确地坚决不使用编程框架
  • 你是否决定允许使用非标准的语言特性
  • 你是否选定并拥有了其他将要用到的工具——编辑器、重构工具、调试器、测试框架(test framework)、语法检查器等

要点
  • 每种编程语言都有其优点和弱点。要知道你使用的语言的明确优点和弱点。
  • 在开始编程之前,做好一些约定(convention)。“改变代码使之符合这些约定”是近乎不可能的。
  • “构建的实践方法”的种类比任何单个项目能用到的要多。有意识的选择最适合你的项目的实践方法。
  • 问问你自己,你采用的编程实践是对你所用的编程语言的正确响应,还是受它控制?请记得“深入一种语言去编程”,不要仅“在一种语言上编程”。
  • 你在技术浪潮中的位置决定了哪种方法是有效的——甚至是可能用到的。确定你在技术浪潮中的位置,并相应调整计划和预期目标。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值