作者:延晨、杨珺、营帅、雪冉、旭光我们收到的简历中几乎所有人都声称“熟悉面向对象”,但很少人能够概括面向对象方法和原则,面向对象设计和过程式设计的关键区别在哪,以及怎么定义和衡量可读性、究竟什么是可复用性、怎样的代码称为脆弱和僵化的。本文从 SOLID 原则出发,通过更贴近业务的解释性文字和具体的代码示例来回答这些问题。<br>什么是 SOLID?<br>在程序设计领域,SOLID 是由 Robert C. Martin(敏捷宣言作者之一,曾任敏捷联盟主席)在21世纪早期提出的便于记忆的首字母缩写,指代面向对象编程和面向对象设计的五个基本原则:单一功能、开闭原则、里氏替换、接口隔离以及依赖反转。在这一章我们只关注这些原则各自的定位和它们之间的关系。见下图:<br>概括地讲(下文会具体展开):单一职责是所有设计原则的基础,开闭原则是设计的终极目标。里氏替换原则强调的是子类替换父类后程序运行时的正确性,它用来帮助实现开闭原则。而接口隔离原则用来帮助实现里氏替换原则,同时它也体现了单一职责。依赖倒置原则是过程式设计与面向对象设计的分水岭,同时它也被用来指导接口隔离原则。<br>什么时候应该应用原则?<br>设计原则和设计模式都是经验的总结,方便分析和解决问题,但并不能用来判断是否存在问题。例如下面这段代码:<br>它违反了单一职责:这个 main 方法即获取了当前日期,又做了日期的处理,数据的写入。这个违反让它更难理解和维护了吗?它违反了开闭原则:很显然这个逻辑并不是可扩展的,只能通过修改的方式去增加功能。这个违反让它更难修改了吗?它违反了依赖倒置原则:main函数直接依赖底层模块fs的writeFile方法,调用main时必须和fs模块绑定。这个绑定让它无法在其他 fs 实现里复用,但是会有这个需求吗?<br>对于一个负责日常工作的、功能不太会扩展的小脚本而言,这段代码是比较完美的。当我们不认为它维护困难时,就不应该对它套用各种原则和模式来把问题复杂化(或过度设计)。当这段代码变得更复杂,我们发现它难以维护时,再去应用原则来诊断和分析问题。有这样的概念后,我们再来看具体的每项原则。<br>单一职责原则<br>内容:一个类只负责一件事,只有一个引起它变化的原因。<br>单一职责希望避免的问题很简单:避免修改一个地方反而引发另一个地方的问题。如果你的项目经常发生这样的问题,
问题<br>A.瞿秋白的“左”倾盲动错误<br>B.李立三的“左”倾冒险主义错误<br>C.王明的左倾教条主义错误<br>D王明“新投降主义”<br><img><br>搜题<br>您可能感兴趣的试题<br>赖特一般在住宅设计中采用不对称的布局,而在()中则保留对称的模式。<br>赖特一般在住宅设计中采用不对称的布局,而在()中则保留对称的模式。<br>“草原住宅”的设计原则来自赖特对()的体验。<br>“草原住宅”的设计原则来自赖特对()的体验。<br>A中国艺术;<br>B日本艺术;<br>C埃及艺术;<br>D印度艺术<br>赖特在威立茨住宅的中央部分设置了壁炉,其空间构成上的目的是()<br>赖特在威立茨住宅的中央部分设置了壁炉,其空间构成上的目的是()<br>A消解建筑的中心性;<br>B增强建筑的中心性;<br>C消解建筑的对称性;<br>D增强建筑的对称性<br>下列关于19世纪70年代后,英国经济状况的叙述不正确的是()<br>下列关于19世纪70年代后,英国经济状况的叙述不正确的是()<br>A.逐渐丧失了世界工业的垄断地位<br>B.造船业和金融业在世界仍占主导地位<br>C.国力下降,先后被美、德等国超过<br>D.殖民地的广阔是导致发展缓慢的原因<br>下面第()条原则不属于赖特为草原住宅提出的设计方针。<br>下面第()条原则不属于赖特为草原住宅提出的设计方针。<br>A简单而宁静;<br>B符合机器美学;<br>C与周围环境相互协调;<br>D满足个性的需要<br>克鲁夫特指出,哪些在1893至1910年间建立起来的草原式住宅,都遵循着赖特于1894年制定的方针,这个<br>克鲁夫特指出,哪些在1893至1910年间建立起来的草原式住宅,都遵循着赖特于1894年制定的方针,这个方针在他1908年出版的《为了建筑》中表述了出来。以自然和他对日本艺术的体验为基础,他的方针中包含了哪六项原则?<br>埃塞俄比亚战胜意大利的主要原因是()<br>埃塞俄比亚战胜意大利的主要原因是()<br>A.意大利是资本主义弱国<br>B.抗意斗争得到外国援助<br>C.全国各阶层人民的英勇抵抗<br>D.英法对意大利的制裁<br>据统计,1906年法国十人以下的小型企业占企业总数的93%,这从本质上反映了法国()<br>据统计,1906年法国十人以下的小型企业占企业总数的93%,这从本质上反映了法国()<br>A.尚未过渡到帝国主义阶级<br>B.工业的基础仍然比较薄弱<br>C.经济发展速度相对缓慢<br>D.小农经济仍占据绝对优势<br>在赖特设计的草原住宅中,对主人性格和民主精神的追求导致了()这样一条基本原则,他因此设计了一系<br>在赖特设计的草原住宅中,对主人性格和民主精神的追求导致了()这样一条基本原则,他因此设计了一系列没有坡屋顶的、用预制混凝土构件进行装饰的住宅。<br>A室内外之间的流通;<br>B方盒子的打破;<br>C开放式的平面;<br>D统一中的多样性<br>19世纪最后30多年里,美国工业化发展迅猛,社会相对稳定,其原因是()<br>19世纪最后30多年里,美国工业化发展迅猛,社会相对稳定,其原因是()<br>A.通过海外贸易、殖民掠夺,积累了丰厚的资本<br>B.消除了种族歧视<br>C.工场手工业发达,积累了丰富的生产技术知识<br>D.北方赢得了内战的胜利,维护了国家统一