clean code

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ccanan/article/details/83513625

本来也是一个书的名字,也是很喜欢的一本书。
这里就写下自己多年coding的理解,阅读clean code的笔记,以及若干coding principle。

bjarne对于clean code的看法

  • straight forward
  • less dependency
  • clean code does one thing well

关于clean code自己的看法
在我看来,clean code在于两个方面:

  • 对于本质的探索,得其本质,就可以以最简单的方式描述
  • 人脑的局限和特点,代码和设计都要尽可能的信息量少,易于阅读和理解
    越能能够做好这两点的,就越是clean的code。

具体
具体我们可以做的一些事情,

  • 尽可能的探求事情的本质,进而简洁表达
  • 表达的过程以一个易于理解的方式,保持专注,表达方式干练,没有废话
  • 持续保持收敛,避免问题的发散
  • 就典型问题积累出具体的解法
    前两点非常的直接,后面两点展开下

保持收敛
这里就谈两个:
1, yagni(you arn’t gonna need it)原则,不要为可能发生的事情做很多准备。
实际上我和组里程序力相当的同事,谈到可扩展的代码的时候,我们都同意,虽然我们常常也会写出在未来程序需求改变时候,依旧运行很好地代码,但是我们在设计的时候,并没有刻意的去考虑。
考虑这些情况,往往会导致多余代码实现,因为未来可能的情况实在太多了,考虑一两种,则因为不能穷尽而本身意义有限,考虑所有则让代码数量级上升而无从去写。
实际情况就是我们只考虑了这个问题的本质,不停留于表面,而深入本质,那么这个问题在“万变不离其宗”的范畴,代码依旧运行良好,在本质发生变化的时候,则不是当前代码的原则了。
如果停留于表面,则“万变不离其宗”的时候,就被万变情况打破了,如果在设计围绕“本质”阶段,对于本质的定义过于宽泛,那么就完全不能收敛,最终造成代码缺少专注,写出一个
2,随着游戏开发的游戏引擎
这里也是,往往我们想做出能够非常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:

猜你喜欢

转载自blog.csdn.net/ccanan/article/details/83513625