Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

代码金字塔 #40

Open
hello2dj opened this issue Dec 9, 2018 · 1 comment
Open

代码金字塔 #40

hello2dj opened this issue Dec 9, 2018 · 1 comment

Comments

@hello2dj
Copy link
Owner

hello2dj commented Dec 9, 2018

废话不说先上图

代码的质量可以被看作是上图的金字塔,每个顶点都代表这代码质量的一个特点。但总体来说一共包含两方面,基础和顶点(base and apex)

基础是什么呢? 基础是那些让我们的代码可靠,可面向未来的特点的集合。而顶点则是代码的功能和可靠性。 你想让你的顶点越高,那么基础就应当越大。

基础包括那些特征呢?

  • 可读性

这个特征代表了代码是否易于阅读,是否易于理解代码的内容及其目的。他又包括以下几个特征:

  • 好的注释,注意不是过多的注释,过多的注释可不是什么好事儿

  • 好的命名无论是类,函数,变量等, 见我的这篇文章

  • 一致的代码规范

  • 干净的逻辑,说白了就是没有废话

  • 可扩展性

这个特征代表了是否易于添加功能(对产品来说做减法的太少,做加法的太多了),好的设计应当具有高扩展性。扩展越高意味添加功能就越轻松,改动也越少。

  • 原子性(低耦合,高内聚)

这个特征代表了我们的功能模块之间是否低耦合,高内聚,模块内修改不影响其他模块。
这里有一些好的原则:

  • SOLID 原则
    • 单一功能原则
    • 开闭原则
    • 里氏替换原则
    • 接口隔离原则
    • 依赖反转原则
  • DRY
  • 持续重构

可测试性

这个特征代表了我们的代码覆盖度有多少,我们的自动化程度有多少。还有单元测试,集成测试以及e2e测试的情况。

金字塔的顶点

顶点代表了,我们的代码做了多少事,以及他的可靠程度

保持顶点与基础平衡

要让我们的基础足够大,整体机构自然就会很好。

那么这个金字塔会有那些形状呢?

  • 代码需要重构,不在是个上小下大的机构了,就是个棍儿了。
  • 所有的都是ok的,完美的金字塔。
  • 底儿太大了,都成了个扁的了,过度设计,只是在浪费资源罢了。

那么怎么测量这个金字是否合适呢?

不幸的是目前还没有什么具体的方法能够测量代码的可测试性,可读性,可扩展性,以及原子性,我们只能靠经验来判断。这是个悲哀。

总结

无数先贤都在探索怎么才能把软件工程化做的更好,我也希望会做的更好,我也会为此做出努力。可这里隐含着一个问题,就好建筑业,他的工程化很成熟,因此带了无数的建筑工人,拿着微薄的工资,做着最累的工作。希望我们这里没有。

@hello2dj
Copy link
Owner Author

hello2dj commented Dec 9, 2018

译文。。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant