《代码精进之路 从码农到工匠》读书笔记
最近看了一本书,很多地方引起自己的共鸣,还有一些自己觉得值得记录的地方,此篇文章摘自自己的读书笔记,希望给大家带来一些帮助和思考。
命名
约定
方法小写开头,驼峰命名;常量大写,以下划线分隔,TOTAL_COUNT;枚举类以 Enum 结尾;抽象类名以 Abstract 开头;异常类以 Exception 结尾;测试类以 Test 结尾;包名小写。
对仗词
add/remove
·increment/decrement
·open/close
·begin/end
·insert/delete
·show/hide
·create/destroy
·lock/unlock
·source/target
·first/last
·min/max
·start/stop
·get/set
·next/previous
·up/down
·old/new
后置限定词
Total、Sum、Average、Max、Min 这样的限定词来修改某个命名,把限定词加到名字的最后,并在项目中贯彻执行,保持命名风格的一致性。
例如 revenueTotal(总收入)、expenseTotal(总支出)、revenueAverage(平均收入)和 expenseAverage(平均支出)。
设计原则
SOLID
### SRP
单一原则
OCP
开闭原则,对修改关闭,对扩展开放。通常通过继承和多态来实现。
LSP
里式替换原则,子类可以替换父类。通常开发中用抽象类作为父类,将可以抽离出的公共代码提取出来,子类继承该抽象类,实现抽象方法。
ISP
接口隔离原则,不能强迫用户去依赖那些他们不使用的接口。
DIP
依赖倒置原则,模块之间交互应该依赖抽象,而非实现。可以简单实践为面向接口编程
分治
代码的两次编写,一次实现功能,一次优化代码,深有感触。
函数分解,保持函数职责单一。
技术人的素养
不教条
批判性思维
结构化思维
成长型思维
记笔记
有目标
成长型思维
努力做个成长型思维的人,成长型思维的人相信自己可以通过学习来提升自我,相信学习和成长的力量,相信努力可以改变智力和能力。
结构化思维,
“逻辑+套路”。逻辑可以分为四种:
(1)演绎顺序:比如“大前提、小前提、结论”的演绎推理方式就是演绎顺序的。
(2)时间(步骤)顺序:比如“第一、第二、第三”和“首先、再者、然后”等,大多数的时间顺序同时也是因果顺序。
(3)空间(结构)顺序:比如“前端、后端、数据”和“波士顿、纽约、华盛顿”等,化整为零(将整体分解为部分)等都是空间顺序。在做空间分解时,要注意满足“相互独立,完全穷尽”(Mutually Exclusive Collectively Exhaustive,MECE)原则。
(4)程度(重要性)顺序:比如“最重要、次重要、不重要”等。
套路:是指我们解决问题的方法论、路径和经验。比如,
5W2H 分析法,Why、Who、When、Where、What、How 和 How much。任何问题都可以从这七个方面思考。
最清晰和实用的结构化表达是“提出问题,定义问题,分析问题,解决问题,最后展望未来”。
另一个有用的思维框架是“zoom in/zoom out”
技术 leader 的修养
- 技术氛围
- 目标管理
Leader 和 manager 是有区别的,leader 是领导人心,引导和激发。manager 只是管理事务。技术 Leader 是专业性非常强的工作。技术 Leader 区别于其他 Leader 之处是你不仅要“以德服人”,还要“以技服人”。要带好一个技术团队,技术 Leader 首先要对技术有热情,有一定的技术能力,并使用一些管理手段,帮助团队成员提升自我,有所成长。
技术氛围可以从 code review ,技术分享,读书会等方面带领团队成长。
目标管理,区别于 KPI,使用 OKR(目标与关键成果)帮助团队成员做好目标。以下为 OKR 事例: