最近一段时间又继续阅读了《程序员修炼之道——从小工到专家》这本书,主要是阅读了第二章的内容,对于其中关于bug方面的阅读,曳光弹的使用,构建软件原型有着较为深刻的印象。
1.重复的危害
给予计算机两项自相矛盾的知识,能够使代码失效。知识是变化的,系统中的每一项知识都必须具有单一、无歧义、权威的表示,可靠的开发软件,并让我们的开发更易于理解和维护的唯一途径,要遵循DRY原则(不要重复你自己)。重复的发生分为四点:强加的重复,无意的重复,无耐性的重复,开发者之间的重复。
2.正交性
在计算技术中,正交性用于表示某种不相依赖性或是解耦性。正交的好处:消除无关事物之间的影响;提高生产率:改动得以局部化,开发和测试的时间得以降低;促进复用;对正交的组件进行组合,生产率会有所提高;降低风险:有问题的代码被隔离开来:系统更健壮;正交系统很可能能得到更好的测试;不会与特定的供应商、产品,或者死是平台紧绑在一起。
3.可撤销性
可撤销性: 考虑可撤销性,不必做出许多关键的,不可逆转的决策,可以让我们应对一些突如其来的变化。灵活的架构:保持代码的灵活性考虑维持架构,部署及供应商集成等领域的灵活性。
4.曳光弹
在黑暗中发光的代码:用曳光弹找到目标,让我们能快速、直观和可重复的从需求出发,满足最终系统的某个方面要求。优点是:用户能够及早看到工作的东西;开发者构建了一个他们能在其中工作的结构;你有了一个工作平台;你有了一个可用于演示的东西;你将更能感受到工作的进展。曳光代码方法处理的是不同的问题,你需要知道应用怎样结合成--个整体你想要向用户演示,实际的交互是怎样工作的,同时你还想要给出一个架构骨架,开发者可以在其上增加代码。
我们要明白任何人不可能写出完美的代码,金无足赤,人无完人,虽然这听起来难以接受,但你可以把它转化为有利条件,针对自己的错误进行防卫性的编码,要确保在找出bug的过程中,不会对代码造成任何破坏,所以我们设法检查各种事项,并在程序出问题的时候终止程序。
要编写能编写代码的代码,简而言之就是我们在生活中看到木匠重复的制作一个东西的时候,他们给自己建造夹具或者模板,一旦做好了这些,他们就可以快速的做出相同的东西出来,并且降低了出错的机会,只要第一个作品是正确的还有模具没有问题,同样我们也需要这样,要构建代码生成器,构建好了整个项目生命期内都可以用它并且没有人格代价。而代码生成器分为主动和被动两种,被动相当于参数化模板,而主动是一种便利手段。代码生成不一定很复杂,并且代码生成器不一定要生成代码。