文档章节

六大原则之选择

我是菜鸟我骄傲
 我是菜鸟我骄傲
发布于 2016/03/13 08:41
字数 720
阅读 23
收藏 0

在编程中,如果六大原则,你只能选一个遵守,你会选择选哪个呢?

      我会选单一职责。单一职责是指:对一个方法,一个类或一个模块来说只承担一个职责。为什么呢?因为单一职责可以确保代码简洁易懂,提高可复用性,在我心里单一职责是最普世的一个职责。如果一个类,方法,或模块内容混入多项职责想而知你的代码会有多么的混乱。而你的代码大部分时间是给其他同事维护的。一段混乱的代码会给同事带了多少痛苦。所以单一职责是确保代码简洁易懂的一个有效的方法。

   如果可以再选一个,我会选开闭原则。开闭原则是指对扩展开放,对修改封闭。其实,在使用开闭原则的时候也就不得不使用另一种原则——依赖倒置原则(指高层模块依赖接口,而不依赖具体实现)。开闭原则的主要目的是在不破坏原有代码的情况下扩展新的功能。这样就会在扩展代码的时候而不会造成新的bug。

  还剩下里氏替换原则,接口隔离原则和迪米特法则这三大原则。如果再从这三个原则中选择一个,我会选择遵守接口隔离原则(代码实现不应该依赖不需要的接口),遵守这个原则的主要目的是避免误会,如果类A实现了接口I,但是不需要接口I中的MI方法,就会导致在使用类A的时候,以为类A实现了MI方法,从而引起误会,出现BUG。其次是简化代码,避免不必要的实现,从而减少BUG量。出现这种问题,是因为接口I承担了不必要的职责,可以考虑拆分接口I。

     接下来我会遵守迪米特法则,迪米特法则是指:类与类之间的关系尽可能的少。这个原则的主要目的是简化代码的复杂度。从而降低bug率,提高可读性。

   剩下的最后一个原则是里氏替换原则(用子类替换父类的实现时,程序还可以跟使用父类实现时一样的运行)。这个原则的目的是避免子类重写父类的方法。对于这个原则我只能做到尽量不重写。至于重写了会这么样?我也只能说会增加Bug率。

 那么,在我眼中的六大原则的重要度排名就是,单一职责,开闭原则,接口隔离原则,迪米特法则,里氏替换原则。


© 著作权归作者所有

共有 人打赏支持
上一篇: 今年三十岁了
我是菜鸟我骄傲
粉丝 13
博文 224
码字总数 139926
作品 0
西安
架构师
私信 提问
设计模式之六大原则与抽象

抽象 抽象是为了某种目的,对一个概念或一种现象包含的信息进行过滤,移除不相关的信息,只保留最终与目的相关的信息。比如:"一个纸杯",我们可以过滤掉质料相关的信息,得到一个更一般且通...

lazy_boy_coder
01/10
0
0
day18(面向对象基础,设计模式)

多继承补充 继承具有传递性,可以借助 类名.mro观察继承关系 设计模式 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在...

冰封心动
2017/11/15
0
0
Android 进阶之路(我的博客文章目录)

原文地址:http://blog.csdn.net/u011240877 为了方便读者阅读以及自己回顾,总结写过的文章和一些想要写的文章目录如下: 1.Java Java 解惑:Comparable 和 Comparator 的区别 Java 解惑:R...

u011240877
2017/04/01
0
0
设计模式的原则(开闭原则)

设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括...

pmos
2016/06/02
28
0
需求分析的六大原则

需求分析的六大原则,点击图片查看原图:

红薯
2010/05/30
304
3

没有更多内容

加载失败,请刷新页面

加载更多

linux使用docker-compose部署软件配置

本篇将分享一些 docker-compose 的配置,可参考其总结自己的一套基于docker的开发/生产环境配置。下面话不多说了,来一起看看详细的介绍吧 安装docker及docker-compose install docker curl ...

开元中国2015
15分钟前
3
0
GraphQL 基金会成立了:将托管于Linux 基金会管理

GraphQL 基金会在11月7日宣布成立,并将由 Linux 基金会管理。GraphQL 基金会将专用于完善和稳定 GraphQL 生态系统,让 GraphQL 得到广泛关注和采用。GraphQL 是 Facebook 开发的一个应用层数...

Linux就该这么学
26分钟前
6
0
Java开发中内存模型详细解析

Java内存模型虽说是一个老生常谈的问题 ,也是大厂面试中绕不过的,甚至初级面试也会问到。但是真正要理解起来,还是相当困难,主要这个东西看不见,摸不着。网上已经有大量的博客,但是人家...

金铭鼎IT教育
29分钟前
3
0
render常用模版 结合iview

表格添加一对按钮 { title: '操作', align: 'center', render: (h, params) => { return h('div', [ h('Button', { props: { ......

Carbenson
45分钟前
1
0
一次生产 CPU 100% 排查优化实践

前言 到了年底果然都不太平,最近又收到了运维报警:表示有些服务器负载非常高,让我们定位问题。 还真是想什么来什么,前些天还故意把某些服务器的负载提高(没错,老板让我写个 BUG!),不...

crossoverJie
52分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部