一些可以用来保持代码解耦的技术

这是一篇翻译的文章

这里的正交是指你的设计实现解耦(decoupled):每一个部分都相互独立,一个部分的改变不会影响其他部分。

  保持你的代码解耦

  编写封闭的(shy)代码——是指一个模块不会向其他模块显露出任何不必要的东西,并且也不会依赖于其他模块的实现。如果你需要改变一个对象的状态(描述),那就让这个对象为你完成此操作。通过这个方法你的代码任然独立于其他代码的实现并且你的项目有很大几率保持正交。

  避免使用全局变量

  每当你的代码引用全局变量,它就会通过这个变量使得自己和其它部分联系起来。尽管你只是试图去读这个全局变量仍有可能导致错误(例如,如果你突然需要改变代码变成多线程)。总而言之,如果你明确地把要求的contex(语境)传入你的模块中,你的代码将很容易理解和维护。在面向对象的结构中,context(语境)经常会被作为参数传递给对象构造函数。在其他代码中,你能够创建一个包含context的结构并且把其他引用传递给他们。

  The Singleton pattern(单例模式)是确保对于一个特定的类只有一个对象实例与之对应。很多人使用这些singleton object(单例对象)作为一种全局变量(特别是像JAVA语言,要不就是不支持全局概念的语言 )。也要小心singletons——他们可能导致不必要的连锁。

  避免相似函数

  你经常会遇到一系列看起来相似的函数——也许他们在开头和结尾共用同一段代码,但是他们每一个的核心算法都不同。 重复代码是结构性问题的一种症状。看一看设计模式中的策略模式会是更好的补充。

养成一个经常批判性思维看待自己代码的习惯。寻找任何一个机会去重新组织代码,提高它的结构和不相关性。这个过程称为重构。

     如何检测自己的程序是否解耦?

 1. 你可以通过对你的项目的每一个模块进行单元测试,在测试的过程中你就可以发现当前模块对于是否是独立的,也就是它的运行对于其他模块的依赖程度。

  2. 当你的程序出现bug时,这是一个绝好的机会去评估你的程序的耦合性,你去修复bug的时候,是只改变了一个模块还是对整个系统或大部分代码都进行了修改。

原文地址:https://www.cnblogs.com/zhxuxu/p/9179921.html