每一个Java程序员都应该学习10条编码原则

每一个Java程序员都应该学习10条编码原则

面向对象的设计原则 是OOP编程的核心。尽管如此,我仍是看到大多数Java程序员都在追逐设计模式,好比单例模式, 装饰图案,或观测器模式,并且没有把足够的注意力放在学习上面向对象的分析与设计.java

学习面向对象编程的基础知识(如抽象、封装、多态性和继承)是相当重要的。可是,同时,了解面向对象的设计原则也一样重要。程序员

它们将帮助您建立一个干净和模块化的设计,这将是很容易测试,调试,并在将来的维护。

ad02204e1aaaa077a1dac234357f0121.jpeg

我常常看到具备不一样经验级别的Java程序员和开发人员,他们要么从未据说过这些面向对象的设计原则,要么从未据说过可靠的设计原则。,或者不知道特定的设计原则有什么好处,以及如何在编码中应用这些设计原则。编程


为了完成个人工做,我已经记下了全部重要的面向对象的设计原则,并把它们放在这里供快速参考。这些至少会让你知道他们是什么,他们提供了什么好处。设计模式


若是你不能理解一个设计原则,你应该尝试作一个以上的例子,由于有时咱们链接到另外一个模型或做者更好;不过,您必须遵循这些设计原则,并学习如何在代码中使用它。您能够作的另外一件事是参加一门全面的面向对象的设计课程,如面向对象设计的坚实原则史提夫·史密斯在“普卢拉明”上。这对我理解和应用这些原则有很大帮助。框架

面向对象和面向对象的程序设计原则

虽然学习任何设计原则或模式的最好方法是一个真实世界的例子,并理解违反该设计原则的后果,但本文的主题是介绍。面向对象设计原则对于Java程序员来讲,他们要么没有公开,要么处于学习阶段。编程语言

3a3c4f23b7529584f5f56c32c1040490.jpeg

我以为这些OOP和实体设计原则须要一篇文章来解释清楚,我将在这里尝试这样作,但就目前而言,请作好准备,在设计原则上快速骑自行车,城镇:)ide


1.DRY(不要重复)

咱们的第一个面向对象的设计原则是枯燥的,顾名思义。DRY(不要重复)意思是不要写重复的代码,而是使用抽象在一个地方抽象平常事物。模块化

若是在两个以上的地方有一个代码块,能够考虑将其做为一个单独的方法,或者若是您屡次使用硬编码的值,则将它们设置为一个单独的方法。公共终常数。这种面向对象的设计原则的好处在于维修.函数

重要的是不要滥用它,复制不是为了代码,而是为了功能。

这意味着若是您使用了标准代码来验证OrderId 和SSN这并不意味着他们是同样的,不然他们将在将来保持不变。工具

经过为两种不一样的功能或事物使用标准代码,您能够永远地将它们紧密结合在一块儿,当OrderId更改其格式时,您的SSN验证代码就会中断。

所以,要当心这种耦合,不要组合使用相似代码但不相关的任何东西。您能够进一步查看软件体系结构基础与设计模式在关于Udemy的Java课程中,学习更多关于编写正确的代码和在设计系统时应遵循的最佳实践的知识。


2.封装变化

在软件领域,只有一件事是不变的,那就是“更改”,所以封装您指望或怀疑未来会更改的代码。

这种面向对象的设计原则的好处是很容易测试和维护正确的封装代码。

若是您使用Java编写代码,那么遵循默认状况下使变量和方法私有并逐步增长访问权限的原则。

几个Java中的设计模式使用封装;工厂设计模式是封装的一个例子,它封装了对象建立代码,并提供了在不影响现有代码的状况下引入新产品的灵活性。

顺便说一句,若是您有兴趣了解更多关于java和面向对象编程中的设计模式的知识,那么您必须检查如下内容:设计模式库关于普鲁拉视野的课程。它是关于如何在现实世界中使用它们的设计模式和建议的最佳集合之一。

3.开放式封闭设计原则

根据这一面向对象设计原则,“类、方法或函数应开放以供扩展(新功能),并关闭以进行修改。”

这是鲍勃叔叔在他的经典做品中提出的另外一个漂亮的坚实的设计原则。清洁码本,这样能够防止某人更改已经尝试和测试过的代码。

这个设计原则的主要好处是尝试过并测试过的代码不受影响。这意味着他们不会崩溃。

下面是一个Java代码示例违反开放式程序设计原则:

在此代码中,GraphicEditor与形状紧密耦合,若是须要新形状,则须要在drawShape(Shape s)方法,这既容易出错,也不可取。

理想状况下,若是您只添加新功能,那么您的代码应该进行测试,这就是开放封闭设计原则的目标。

顺便说一句,开闭原则是固体缩略词的“O”。若是您想更多地了解这个原则,面向对象设计与体系结构的坚实原则关于Udemy的课程是最好的参考资源之一。


4.单一责任原则

单责任原则是另外一个坚实的设计原则,在实体字缩写中表明“S”。根据SRP,不该该有一个以上的缘由来改变一个类,或者一个级别应该始终处理单个功能。

这个原则的主要好处是它减小了软件的各个组件与代码之间的耦合。

例如,若是您在Java中的一个类中放置了多个功能,那么它将引入耦合在两个功能之间,即便您更改了一个特性,也有可能破坏耦合功能,这须要进行另外一轮测试,以免对生产环境产生任何意外。

你还能够看到从0到1:设计模式-24 关于Udemy的课程,学习基于这个原则的模式。


5.依赖注入或反转原则

不要要求依赖,它将由框架提供给您。这在Spring框架中获得了很好的实现,Spring框架是编写真正有价值的应用程序的最流行的Java框架之一。

这种设计原则的优势在于,任何由DI框架注入的类都很容易用模拟对象进行测试,并且易于维护,由于对象建立代码集中在框架中,而且客户端代码中并不散落着这些代码。

有多种实现方法依赖注入,好比使用字节码工具,一些AOP(面向方面编程)框架就像AspectJ那样,或者像Spring同样使用代理。

您能够进一步看到面向对象设计与体系结构的坚实原则关于Udemy的课程,以了解更多关于这个有用的原则。它还表明固体缩略词的“D”。

下面是一个违背依赖反转原则或Java中DIP的代码示例:

你能够看到AppManager 取决于EventLogWriter 与AppManager。若是您须要使用其余方式通知客户端,好比发送推送通知、SMS或电子邮件,则须要更改AppManager 班级。

这个问题能够用依赖反转原理来解决。AppManager 索要EventLogWriter,它将由框架注入或提供给AppManager。

你还能够看到用扎实的原则编写更好的代码--速成课程对Udemy更多地了解依赖反演原理以及如何解决这些问题。


6.有利于组合而不是继承

重用您已经编写的代码的通常方法有两种,即继承和组合;二者各有优缺点,但通常来讲,若是可能的话,您应该老是倾向于组合而不是继承。

大家中的一些人可能会这么说,但我发现构图是否是比继承.

经过在运行时设置属性,组合容许在运行时更改类的行为,经过使用接口组合类,咱们使用多态,它提供了在任什么时候候以更好的实现代替的灵活性。

甚至约书亚·布洛赫有效Java建议倾向于组合而不是继承。若是你尚未被说服,那么你也能够了解为何组合比继承更适合重用代码和功能。

并且,若是你老是忘记这条规则,这是一个很好的卡通放在你的桌子上:-)

若是您对学习更多关于面向对象编程概念(如组合、继承、关联、聚合等)感兴趣,也能够查看Java中的面向对象编程关于古瑟拉的课程。

它能够自由探索和学习可是,若是你也想参加练习、做业、评估,而且须要在你的LinkedIn我的资料中显示证书,你将被收取费用。

7.Liskov替代原则

根据Liskov替换原则,子类型必须是超级类型的替代I指使用超类类型的方法或函数必须可以使用对象子类,没有任何问题“。

LSP关系密切对单一责任原则和界面分离原理.

若是类具备比子类更多的功能,则可能不支持某些功能,而且确实违反了LSP。

为了跟随LSP实体设计原理,派生类或子类必须加强功能,而不是减小它们。LSP表明固体缩略词的“L”。

下面是一个违背Java中Liskov替换原则的代码示例:

Liskov替换原理在Java中的应用

若是你有办法area(Rectangle r),它计算矩形的面积,而后当您传递Square 由于Square 不是真正的长方形。

若是您对一个更真实的示例感兴趣,那么面向对象设计的坚实原则Pluralsight课程是一门很是好的课程。


8.接口隔离原则(ISP)

接口隔离原则说明客户端不该实现界面若是它不使用这个的话。

这种状况主要发生在一个接口包含多个功能时,而客户机只须要一个功能,而不须要其余功能。

毫无疑问,接口设计是一项棘手的工做,由于一旦您释放了您的接口,您就没法在不破坏全部实现的状况下更改它。固然,Java 8的默认或保护方法功能确实为接口的发展提供了一种方式,但并非全部的编程语言都支持这些特性。

这种设计原则在Java中的另外一个好处是,接口的缺点是在任何类均可以使用它以前实现全部方法,所以拥有单一的功能意味着实现的方法更少。

若是您在编写代码时得不到接口的好处,那么我建议您阅读个人博客文章,Java中接口的实际使用了解更多。

9.接口方案编制-不执行

程序员应该老是用于接口的程序,而不是用于实现的;将致使灵活的代码,它能够与接口的任何新实现一块儿工做。

具体而言,您应该对变量使用接口类型,返回方法的类型。类Java中的参数类型SuperClass类型来存储对象,而不是使用SubClass.

我是说

List numbers= getNumbers();

而不是

ArrayList numbers = getNumbers();

这也在许多Java书籍中获得了建议,包括有效Java和头第一设计模式书。

若是您对提升程序的代码质量感兴趣,我还建议您看看重构设计模式关于Udemy的课程,它将帮助您使用C#中的重构技术和设计模式来改进内部设计。

10.受权原则

不要本身作全部的事情,把它委托给相应的班级。委托设计原则的经典例子是java中的equals()和hashCode()方法.

为了比较两个对象是否相等,咱们要求类自己进行比较,而不是进行比较。Client 作那个检查。

这个设计原则的主要好处是没有重复代码并且很容易改变行为。事件委托是此原则的另外一个示例,其中将事件委托给处理程序进行处理。


总结

全部这些面向对象设计原则经过努力实现高内聚性和低耦合性,帮助您编写灵活和更好的代码。

理论是第一步,但最重要的是培养发现什么时候应用这些设计原则的能力.

一旦掌握了这一点,下一步就是学习Java中的设计模式,它使用这些设计模式来解决应用程序开发和软件工程中常见的问题。


原做者:Java学习提高
原文连接: 每一个Java程序员都应该学习10条编码原则
原出处:公众号
侵删

d11bd62993de621a4cb57befa71c36d6.jpeg

相关文章
相关标签/搜索