「漫谈」软件设计的目标和途径是什么?(4)

2023-05-03 来源:飞速影视
打个比喻,就好比宪法是其他一切法律的基础,任何法律如果违背了宪法,那么就是无效的。
那么根据可维护性可推导出来3个核心的原则:可理解性、可测试性和可隔离性。
5.1 可理解性
这条原则看起来很有主观性的倾向,但是其实并不是。
比如说你刚写了一段代码,你觉得容易理解,他看起不容易理解;或者说代码是他写的,他看起来很容易理解,但是到你这里无法一下子理解他的思维,然后你就觉得不好理解。如果出现了这样的情况,那么则统统都是不可理解的。这时候你要说了:你要一棍子打死双方啊。是的,正是如此。再回想一下我们的目标是什么?可维护性! 这里的维护不单单是说你的代码你来维护,而是大家互相交叉着;你新增了一个功能,后续负责其他的事情去了,那么这时候就由你的队友来负责维护了;或者你接手维护别人的代码。
所以我们需要一个客观上的可理解性。那么到底什么才能叫客观?没法度量啊!其实也不复杂,就是看当你读到一段代码的时候,你是否需要额外的思考,额外的脑中维持一个上下文的环境才能明白这段代码的意图,如果需要,那么就是不可理解的,至少也是不易理解的。更简单点说就是这段代码应该让你不用思考就看的明白它的意图。比如下面的一个小例子,功能是完全等价的,但是差异非常微妙。

「漫谈」软件设计的目标和途径是什么?


你觉得可理解性怎么排? 答案是肯定的吧?
1 > 2 > 3 > 4。
1是不是你根本就不用思考,直接读下来就知道其含义?2则是有一个==fasle的过程,需要你进行简单的思考。3则是接近于2,但是比2更差一点,因为取反符号在前面,但是其决定性的值则在后面,而你的阅读顺序是从左向右,所以你需要一个比2稍微更复杂一点的思考过程。前三个还都一眼能看出来是空或者非空的语境,但是4就更差了,4的字面意思是长度不等于0,逻辑上其实和非空是等价的,但是你需要在脑中做这样的一个映射长度!=0等同于非空,这个的抽象层级明显更低了一个层级。不知道能否体会其中差细微差异。那么你觉得这些理解是客观的还是主观的呢?
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号