程序员修炼之道 第二章

第二章 注重实效的途径

7重复的危害

知识不是稳定的所以我们需要花大量时间去维护我们的知识程序员也必须不断维护软件而开发中的重复则是维护的噩梦所以可靠的开发软件并让我们的开发更加易于理解和维护的唯一途径是DRY原则及系统中的每一项知识都必须具有单一无歧义权威的表示

重复分为强加的重复来自项目标准编程语言自身的结构重复等无意的重复来自设计的重复无耐性的重复相同或类似的内容更多人会选择去拷贝我在写一些题的过程中也遇到过有的东西就是需要反复用到的但我是选择了拷贝而不是单独写成一个方法再反复调用开发者之间的重复处理这个问题的最佳方式是鼓励开发者相互进行主动交流

8正交性

正交性是指两个或更多事物中的一个发生变化不会影响其他事物正交可以消除无关事物之间的影响正交的系统可以提高生产率和降低风险在项目团队设计工具箱与库的选择编码测试和文档者几个方面我们都应该考虑正交性例如编码我们可一通过让代码保持解耦避免使用全局数据避免编写相似的函数来维护正交性紧密结合DRY原则运用正交性原则你将会发现你开发的系统会变得更加灵活更易理解并且更易于调试测试和维护

9可撤销性

如果某个想法是你唯一的想法再没有什么比这更危险的事情了一个项目不能仅仅局限于一种实现方式关键决策不容易撤销我们需要考虑可撤销性把决策视为是写在沙滩上的而不是刻在石头上不存在最终决策错误就在于决策是浇铸在石头上同时没有为可能出现的意外事件做准备另外我们不但要设法把持代码的灵活性还需要考虑维持架构部署及供应商集成等领域的灵活性该换就换

10曳光弹

在黑暗的环境中开枪士兵选择使用曳光弹在项目的开发当中也可以使用曳光代码

曳光代码含有完整的错误检查结构文档及自查只不过功能不全通过曳光代码可以检查距离最终目标还有多远并且可以及时调整代码相比于传统的把完整代码都实现的方法曳光代码有几个优点用户能够及早看到能工作的东西开发者构建了一个他们能在其中工作的结构你有了一个集成平台你有了可以用于掩饰的东西你将更能感觉的工作进展曳光代码并非总能击中目标但他可以提醒你及时调整最终击中目标

11原型与便笺

我们可以构建软件原型来分析和揭示风险并以较低的代价为修正提供机会软件原型不一定非要是代码便笺也可以原型的目的是为了回答一些问题代码可以忽略不重要的细节任何有风险的没试过的实验性的或有疑问的东西都可以为其制作原型制作原型的价值在于学到的经验教训制作原型可以忽略正确性完整性健壮性和风格适当使用原型可以帮人在开发周期的早期确定和改正潜在的问题点及时改正省时省力省钱

12领域语言

我们可以发明一种为应用领域进行了适当裁剪的小型语言来确切表达用户的需要这种语言是我们自己的一个工具方便我们更加靠近问题的领域工作不同的用户有不同的问题领域我们可以为他们生成各自的小型环境和语言小型语言可以采用面向行的易于解析的格式还可以用更为正式的语法实现更复杂的语言实现小型语言还可以拓展已有的语言

13估算

估算以避免发生意外在估算的过程中你可以加深对你的程序所处世界的理解对于不同的问题答案的准确性是不一样的我们应选择能反映你想要传达的精确度的单位估算以问题模型为基础而估算的一个诀窍就是问做过此事的人你会成功借鉴他人的经验为了更好估算我们应该理解提问内容建立系统的模型把模型分解为组件给每个参数指定值计算答案同时追踪你的估算能力估算项目进度

posted @ 2022-09-27 17:35  Men!  阅读(29)  评论(0编辑  收藏  举报