《程序员修炼之道》笔记
date
Jul 9, 2023
slug
程序员修炼之道笔记
status
Published
tags
笔记
IT
summary
程序员修炼之道提到的编程原则,让你成为一名务实的技术人员
type
Post
原书名 The Pragmatic Programmer,作者是 Andrew Hunt 和 David Thomas
本笔记不会按书籍顺序记录,书籍序言部分也如此建议。本笔记也不会列出所有的 tips,不是为了记录而记录,而是在记录阅读中感受到的那种 “哇” 的 tips。
正交性
Eliminate Effects Between Unrelated Things
提示13 消除无关事物之间的影响
正交性的最大作用在于 降低风险 ,在坐标系中中修改 X 轴的内容,不会影响 Y 轴的东西,也易于开发和调试。
DRY
DRY-Don't Repeat Yourself
提示11 不要重复你自己
著名的 DRY ,文中提到一个很容易辨别是否重复的方法 :
与此不同的做法是在两个或更多地方表达同一事物。如果你改变其中一处,你必须记得改变其他各处。
文中把重复分为几类,而 “开发者之间的重复” 是最难检测和处理的(太对了)。而解决此问题最重要部分是 交流 - “最佳方式是鼓励开发者相互进行主动的交流“。然后从系统设计、项目领导、文档、固定区域存放实例和脚本等方式加以规避。
软件的熵
Don't Live with Broken Windows
提示4 不要容忍破窗户
文中提到“熵”是物理学概念,表示“无序“的总量。而软件中留着破窗户(低劣的设计、错误决策、或是糟糕的代码)不去修复,最终会导致软件的腐烂奔溃,熵的增加。
如果当下没有足够的时间修复,需要明显的标记出破窗户的位置,让其可以在你控制之内,而不是任其发展,导致软件的腐烂。
可撤销性
There Are No Final Decisions
提示14 不存在最终决策
作者告诉我们,需要有一种灵活的架构,使得组件可以随时被替换而不影响其他组成部分,可撤销性意味着多供应商,决策改变时,工作得以继续。文中还说了一句很有哲理的话,放到生活中也值得思考:
没有什么永远不变——而如果你严重依赖某一事实,你几乎可以确定它将会变化。
按合约设计
Design with Contracts
提示31 通过合约进行设计
原文这句话足以让我醍醐灌顶:
这里,强调的重点是在“懒惰”的代码上:对在开始之前接受的东西要严格,而允诺返回的东西要尽可能少。记住,如果你的合约表明你将接受任何东西,并允诺返回整个世界,那你就有大量代码要写了!
代码生成器
Write Code That Writes Code
提示29 编写能编写代码的代码
作者推荐代码生成器生成代码模版,用于减少重复性的生成“表亲”代码,降低编写的复杂性和错误率。github copilot帮助生成的代码,也主要用于生成表亲代码。现在来到AI时代,也可以使用各种插件,只要编写注释,就可以让AI帮你生成代码,但是这个代码与文中提到的代码生成器不是一个概念,AI代码需要再次验证,不一定会降低复杂度和错误率,但是提供了有效的编码思路。