Principles of Good Programming

知道原则很重要,更重要的是,知道后要坚持原则,坚持原则,坚持原则,重要的事说三遍。

DRY

Don’t repeat yourself

这就是常说的程序员喜欢重复造轮子。每一次重复,就多了一层抽象,多了一层复杂性,难道你喜欢一次穿好多双袜子吗?

DRY

99.999%以上你的问题,世界上别的程序猿已经碰到过,思考过,解决过,所以,千万别急,千万别异想天开,至少参考一下。

KISS

Keep it simple, stupid!

我更喜欢解读成 Keep it stupid, so it can be simple ,笨方法往往是最好的方法,是不是有点哲学的味道?

KISS

Avoid Creating a YAGNI

You aren’t going to need it

创业里讲的 MVP(Minimum Viable Product)- 极简原则,可造可不造 - 别造, 可用可不用 - 别用,不知道怎么做 - 别做,设计 API 时非常有用。

Abstraction Principle

抽象原则 - 好像说的是数学,不过也可用在编程上,数学的力量来源于抽象,代码的力量也来源于抽象 - 说得好像是 OO,不过这是有代价的哦。

Minimize Coupling

解耦原则:复杂问题的解决方法来源解耦,解的过程就是深入认识问题的过程。如果代码的力量来源抽象,那么系统的威力就来源于解耦。这是两根大棒,但不要“滥用”,得不断提高这方面的能力。

Separation of Concerns

和“解耦原则” & “单一原则”一样,不同的东西放在一起,自己都不清楚在干啥。不同的东西需要不同的思维,写代码如此,做事情如此,做人如此。

Single Responsibility Principle

单一原则:一次只做一件小事,一段代码只做一件事情,并把它做到极致。

Maximize Cohesion

不知如何解释,所谓的有组织有条理吧,尽量把相同或类似的东西放在一起。像搭积木一样,解决问题和写代码时尽量采用组合或延续的办法而不是从头开始。

Open/Closed Principle

把一份代码/系统/设计/工作做完整(closed)- 别人不需要七改八改才能工作;把一份代码/系统/设计/工作做得灵活(open)- 别人可以七加八加,完成更多不同的事情。完整性和灵活性是架构师和优秀程序猿时常考虑的问题,也是 nb 或菜鸟的区别所在。

Write Code for the Maintainer

可读性:好的代码和好的书一样,是给人读的 - 自己和别人。

可读性

Don’t make me think

命名,信息,尽量精确,完整,别偷懒

Principle of least astonishment

一切和想的一样,no news is good news。

Avoid Premature Optimization

先解决问题,再想如何优化,过早优化是一切灾难的来源:

premature optimization is the root of all evil”

Donald Knuth

最后,我们做架构,做 solution,做设计,写代码,开发软件,不只是给我们自己用的,得把这些当作自己的产品,给别的代码调用,别的开发人员使用,而一个好的产品,一定遵循三原则:

有用 userful
易用 effortless
好用 enjoyable

永远不会错

0%