Java教程

设计原则和编程技巧

本文主要是介绍设计原则和编程技巧,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一. 单一职责原则

        单一职责,也就是指某个类,或函数,或对象只做一件事情。如果某个模块涉及的职责越多,那么它被修改的几率越大,你在修改某个功能时可能会影响其它代码,造成不必要的 bug。

        单一职责原则在很多设计模式中都有着广泛的运用,代理模式迭代器模式单例模式封装模式,这些模式在前几个文章都有单独写过,就不在详细说明,感兴趣的可以去看一下。

1. 何时应该分离职责

        首先我们要明确,不是所有的职责都应该一 一分离,所以单一职责原则是最简单也是最难应用的原则。一方面,如果随着需求的变化,两个职责总是同时变化那就不变分离他们。另一方面即使两个职责已经被耦合在一起,但他们还没有改变的征兆,那么也没必要主动分离他们,在代码需要重构时在进行分离也不迟。

2. 单一原则优缺点

优点:降低了单个类或对象的复杂度,有利于代码复用,也有利于进行单元测试,当一个职责变更时不会影响其他职责。

缺点:明显增加代码编写的复杂度,按职责划分为更小粒度之后,也恰恰增大了这些对象联系的难度。

二. 最少知识原则

        最少知识原则说的是完成一个功能,应该用最少的对象或类或函数参与其中。

1. 减少对象之间的联系

        在程序设计时,应当尽量减少对象之间的交互,如果两个对象不必彼此直接通信,那么这两个对象就不要发生直接相互联系。常见的做法时引入第三方来承担这些对象的通信作用。如果一些对象需要向另一些对象发起请求,可以通过第三者对象来转发这些请求。

2. 设计模式中的最少知识原则

        最少知识原则所运用的设计模式是中介者模式和外观模式。中介者模式在前边文章中有详细介绍。

3. 封装在最少知识原则中的体现

        封装表达的是对数据的隐藏,将其中的变量或实现细节隐藏,只暴露一个与外界访问的接口API。

三. 开放-封闭原则

        在面向对象的程序设计中,开放封闭原则是最重要的一条原则,也就是说一个模块是可以扩展的,但是不可以修改。

1. 扩展函数

        应用最广泛的便是装饰者模式,在不更改原函数的情况下,来为一个函数添加一个新的功能。

2. 开放和封闭

        思想:当需要改变一个程序的功能或者给这个程序增加新的功能时,可以使用增加代码的方式,但是不允许改动程序的源代码。

3. 用对象的多态性消除条件分支

        过多的条件分支是造成程序违反开放封闭原则的一个原因。每次增加一个新的分支,便会对原代码进行修改。所以我们要考虑是否可以用对象的多态性重构他们。

4. 找出变化的地方

        找出程序中将要发生变化的地方,然后把变化封装起来。把系统中稳定不变的部分和容易变化的部分隔离开来。

  • 放置挂钩:在程序有可能发生变化的地方放置一个挂钩,挂钩返回结果决定了函数的下一步走向。
  • 使用回调函数:将异步易于变化的函数封装在回调函数中,然后把回调函数传入一个稳定封闭的函数中。

5. 设计模式中的开放封闭原则

        几乎所有的设计模式都遵循开放封闭原则,开放封闭原则是编写一个好程序的目标,其他设计原则都是达到这个目标的过程。

        1. 发布订阅模式:降低对象之间的依赖关系

        2.模板方法模式:通过封装变化来提高系统扩展性

        3. 策略模式:策略和使用策略的客户代码分别独立进行修改而互不影响

        4. 代理模式:专注于设计自己的职责,让代理来增加其他机制

        5. 职责链模式:修改任意一个节点对其他节点都没有影响

四. 代码重构

1. 提炼函数

  • 避免出现超大函数
  • 独立出来的函数有助于代码复用
  • 独立出来的函数更容易被覆写
  • 独立出来的函数拥有良好的命名,起到了注释的作用

2. 合并重复的条件片段

        如果条件分支语句中散步了一些重复的代码,那么就需要进行合并。

3. 把条件分支语句提炼成函数

        将条件分支的判断语句封装到一个单独的函数中。

4. 合理使用循环

5. 提前让函数退出代替嵌套条件分支

        在合适的地方使用 return 提前结束分支判断。

6. 传递对象参数代替过长的参数列表

7. 尽量减少参数数量

8. 少用三目运算

9. 合理使用链式调用

        如果链条结构相对稳定,后期不易发生修改,那么就可以使用链式调用。

10. 分解大型类

11. 用 return 退出多重循环

五. 总结

        设计模式和设计原则是为我们做大型项目时提供方便,当你面对很多无理的需求时,你就能深刻感受到它给我们带来的好处。可能自己写一些小的项目时觉得没有必要,有时候确实如此。但是我们要把设计模式和原则作为我们编程的习惯和思想,让我们可以写出诗一样的代码!

        

这篇关于设计原则和编程技巧的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!