clean code
本来也是一个书的名字,也是很喜欢的一本书。
这里就写下自己多年coding的理解,阅读clean code的笔记,以及若干coding principle。
bjarne对于clean code的看法
- straight forward
- less dependency
- clean code does one thing well
关于clean code自己的看法
在我看来,clean code在于两个方面:
具体
具体我们可以做的一些事情,
- 尽可能的探求事情的本质,进而简洁表达
- 表达的过程以一个易于理解的方式,保持专注,表达方式干练,没有废话
- 持续保持收敛,避免问题的发散
- 就典型问题积累出具体的解法
前两点非常的直接,后面两点展开下
保持收敛
这里就谈两个:
1, yagni(you arn’t gonna need it)原则,不要为可能发生的事情做很多准备。
实际上我和组里程序力相当的同事,谈到可扩展的代码的时候,我们都同意,虽然我们常常也会写出在未来程序需求改变时候,依旧运行很好地代码,但是我们在设计的时候,并没有刻意的去考虑。
考虑这些情况,往往会导致多余代码实现,因为未来可能的情况实在太多了,考虑一两种,则因为不能穷尽而本身意义有限,考虑所有则让代码数量级上升而无从去写。
实际情况就是我们只考虑了这个问题的本质,不停留于表面,而深入本质,那么这个问题在“万变不离其宗”的范畴,代码依旧运行良好,在本质发生变化的时候,则不是当前代码的原则了。
如果停留于表面,则“万变不离其宗”的时候,就被万变情况打破了,如果在设计围绕“本质”阶段,对于本质的定义过于宽泛,那么就完全不能收敛,最终造成代码缺少专注,写出一个
这里也是,往往我们想做出能够非常general,可以做任何游戏的引擎,但这也应了《孙子兵法》里的一句话“备前则后寡,备后则前寡,无所不备,则无所不寡”
我们的开发资源总是有限的,有的时候是人力和时间,这个尚且可以通过钱来不足,但是程序复杂度和有限的方向选择,则是不可扩展的。
不收敛的结果就是“无所不寡”,你不会写出同时在室内处理和室外处理都最优的场景管理,不收敛则平庸。
典型问题的典型解法
这里直接收录大量的信息,完全可以背诵以用于日常开发:
10 programming principle(https://www.makeuseof.com/tag/basic-programming-principles/)
其中两个是废话,省略成8个
- kiss
- dry–don’t repeat yourself
- open/close–open to extention close to modification
- composition over inheritance
- single responsibility - “each class should have only one reason to change”
- separate of concerns–mvc就是典型案例,要各司其职
- YAGNI–you aren’t ganna need it, 不要为未来你可能遇到的问题来写代码
- clean code > clever code
clean code书中比较好的信息:
- 命名要准确有意义,可读可搜索(by me)
- 函数尽可能短,只做一件事情
- 类要保持内聚:只做一个层级的一件事情
- concurrency code非常危险,很难写对,尽可能写的简单,并且和其他模块分离
书末有非常多的可实践的建议,也都非常好,包括不限于
- 应该删除的:多余的注释,错误的注释,注掉的代码
- 函数不应该:太多的参数,做两件不同的事情,
- 。。。一共36条,
ref:
- < clean code >
- https://www.makeuseof.com/tag/basic-programming-principles/
相关阅读
Unicode Chart Range Decimal Name 0x0000-0x007F 0-127 Basic Latin 0x0080-0x00FF 128-255 Latin-1 Su
查询网址: https://www.qqxiuzi.cn/bianma/zifuji.php 查询示例: 常见的汉字字符集编码: GB2312编码:1981年5月1日发布的简体中
注意事项: 断网注册 注册码: 名称:Registered User密钥:CBB4-FJN4-EPC6-G5P6-QT4C 名称:任意密钥:C2YW-XZT7-A4SE-UD89-YZPC 名称
DSCP(Differentiated Service Codepoint,差分服务代码
IP优先级方案可以粗略地将数据分为8个等级/类别,并还可以使用紧随优先级比特之后的4比特进一步的数据分类。当出现拥塞时,优先级低
三、显示屏功能体验:没想到还能这么玩在前文当中,我们多次提到Oclean X电动牙刷那个形如小米手环米粒的显示屏,它一改人们对于牙刷形