《代码精进之路 从码农到工匠》读书笔记

最近看了一本书,很多地方引起自己的共鸣,还有一些自己觉得值得记录的地方,此篇文章摘自自己的读书笔记,希望给大家带来一些帮助和思考。

命名

约定

Img

方法小写开头,驼峰命名;常量大写,以下划线分隔,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

依赖倒置原则,模块之间交互应该依赖抽象,而非实现。可以简单实践为面向接口编程

分治

代码的两次编写,一次实现功能,一次优化代码,深有感触。

函数分解,保持函数职责单一。

技术人的素养

  • 不教条

  • 批判性思维

  • 结构化思维

  • 成长型思维

  • 记笔记

  • 有目标

成长型思维

努力做个成长型思维的人,成长型思维的人相信自己可以通过学习来提升自我,相信学习和成长的力量,相信努力可以改变智力和能力。

Img

结构化思维,

“逻辑+套路”。逻辑可以分为四种:

(1)演绎顺序:比如“大前提、小前提、结论”的演绎推理方式就是演绎顺序的。

(2)时间(步骤)顺序:比如“第一、第二、第三”和“首先、再者、然后”等,大多数的时间顺序同时也是因果顺序。

(3)空间(结构)顺序:比如“前端、后端、数据”和“波士顿、纽约、华盛顿”等,化整为零(将整体分解为部分)等都是空间顺序。在做空间分解时,要注意满足“相互独立,完全穷尽”(Mutually Exclusive Collectively Exhaustive,MECE)原则。

(4)程度(重要性)顺序:比如“最重要、次重要、不重要”等。

套路:是指我们解决问题的方法论、路径和经验。比如,

5W2H 分析法,Why、Who、When、Where、What、How 和 How much。任何问题都可以从这七个方面思考。

最清晰和实用的结构化表达是“提出问题,定义问题,分析问题,解决问题,最后展望未来”。

另一个有用的思维框架是“zoom in/zoom out”

技术 leader 的修养

  1. 技术氛围
  2. 目标管理

Leader 和 manager 是有区别的,leader 是领导人心,引导和激发。manager 只是管理事务。技术 Leader 是专业性非常强的工作。技术 Leader 区别于其他 Leader 之处是你不仅要“以德服人”,还要“以技服人”。要带好一个技术团队,技术 Leader 首先要对技术有热情,有一定的技术能力,并使用一些管理手段,帮助团队成员提升自我,有所成长。

技术氛围可以从 code review ,技术分享,读书会等方面带领团队成长。

目标管理,区别于 KPI,使用 OKR(目标与关键成果)帮助团队成员做好目标。以下为 OKR 事例:

Img