Open hello2dj opened 5 years ago
废话不说先上图
代码的质量可以被看作是上图的金字塔,每个顶点都代表这代码质量的一个特点。但总体来说一共包含两方面,基础和顶点(base and apex)
基础是什么呢? 基础是那些让我们的代码可靠,可面向未来的特点的集合。而顶点则是代码的功能和可靠性。 你想让你的顶点越高,那么基础就应当越大。
这个特征代表了代码是否易于阅读,是否易于理解代码的内容及其目的。他又包括以下几个特征:
这个特征代表了是否易于添加功能(对产品来说做减法的太少,做加法的太多了),好的设计应当具有高扩展性。扩展越高意味添加功能就越轻松,改动也越少。
这个特征代表了我们的功能模块之间是否低耦合,高内聚,模块内修改不影响其他模块。 这里有一些好的原则:
这个特征代表了我们的代码覆盖度有多少,我们的自动化程度有多少。还有单元测试,集成测试以及e2e测试的情况。
顶点代表了,我们的代码做了多少事,以及他的可靠程度
要让我们的基础足够大,整体机构自然就会很好。
不幸的是目前还没有什么具体的方法能够测量代码的可测试性,可读性,可扩展性,以及原子性,我们只能靠经验来判断。这是个悲哀。
无数先贤都在探索怎么才能把软件工程化做的更好,我也希望会做的更好,我也会为此做出努力。可这里隐含着一个问题,就好建筑业,他的工程化很成熟,因此带了无数的建筑工人,拿着微薄的工资,做着最累的工作。希望我们这里没有。
译文。。。
废话不说先上图
代码的质量可以被看作是上图的金字塔,每个顶点都代表这代码质量的一个特点。但总体来说一共包含两方面,基础和顶点(base and apex)
基础是什么呢? 基础是那些让我们的代码可靠,可面向未来的特点的集合。而顶点则是代码的功能和可靠性。 你想让你的顶点越高,那么基础就应当越大。
基础包括那些特征呢?
可读性
这个特征代表了代码是否易于阅读,是否易于理解代码的内容及其目的。他又包括以下几个特征:
可扩展性
这个特征代表了是否易于添加功能(对产品来说做减法的太少,做加法的太多了),好的设计应当具有高扩展性。扩展越高意味添加功能就越轻松,改动也越少。
原子性(低耦合,高内聚)
这个特征代表了我们的功能模块之间是否低耦合,高内聚,模块内修改不影响其他模块。 这里有一些好的原则:
可测试性
这个特征代表了我们的代码覆盖度有多少,我们的自动化程度有多少。还有单元测试,集成测试以及e2e测试的情况。
金字塔的顶点
顶点代表了,我们的代码做了多少事,以及他的可靠程度
保持顶点与基础平衡
要让我们的基础足够大,整体机构自然就会很好。
那么这个金字塔会有那些形状呢?
那么怎么测量这个金字是否合适呢?
不幸的是目前还没有什么具体的方法能够测量代码的可测试性,可读性,可扩展性,以及原子性,我们只能靠经验来判断。这是个悲哀。
总结
无数先贤都在探索怎么才能把软件工程化做的更好,我也希望会做的更好,我也会为此做出努力。可这里隐含着一个问题,就好建筑业,他的工程化很成熟,因此带了无数的建筑工人,拿着微薄的工资,做着最累的工作。希望我们这里没有。