如题所述
第1个回答 2013-01-14
依赖的强弱即耦合的高低,软件中追求高内聚低耦合 降低耦合即可完成您的打破依赖
降低耦合方法:
1.一个函数只做一件事。我看到过的一些OI程序似乎在“吝啬”地使用函数。也就是说持“能少一个函数就少一个函数”的态度。然而为了减少耦合,我们应该把庞大的、笨重的东西拆成小部件,让每一个小部件和尽量少的外部的东西耦合。另外,单个函数的行数多了会导致出错这也是广泛的共识。
2.不要过早在意细节优化。我知道,有些OI程序中有很巧妙的东西,比如说在排序的同时算前缀和之类。可是,真的需要这样做 吗?为了少写几次for或者是为了还不清楚的“效率”?效率不是想当然的东西,只有Profile能告诉你真正的效率如何瓶颈在哪里。先用最清楚的逻辑描述出程序的框架,如果真的有时间效率问题那一般来说是算法复杂度的问题,在程序编好且正确之后再考虑细节优化吧。这是耦合度增加的温床。
3.减少全局变量的数量。全局变量是耦合的多发地。在软件的开发过程中甚至有些专门对付它们的模式,例如“Singleton”。相信我,你能减少它们。在这一点上我不想说太多。
4.试图面向对象。我知道很难让人像我一样,每当要在程序中用到某种数据结构——不管是最简单的队列还是复杂些的并查集或者Suffix Tree——我都会编一个class,而且很可能是Template Class。我并不是炫耀,我只是想减少耦合,我只是想使程序更清晰些。“面向对象”这个话题会在本系列中单列一篇文章来做更详尽的分析。本回答被网友采纳
降低耦合方法:
1.一个函数只做一件事。我看到过的一些OI程序似乎在“吝啬”地使用函数。也就是说持“能少一个函数就少一个函数”的态度。然而为了减少耦合,我们应该把庞大的、笨重的东西拆成小部件,让每一个小部件和尽量少的外部的东西耦合。另外,单个函数的行数多了会导致出错这也是广泛的共识。
2.不要过早在意细节优化。我知道,有些OI程序中有很巧妙的东西,比如说在排序的同时算前缀和之类。可是,真的需要这样做 吗?为了少写几次for或者是为了还不清楚的“效率”?效率不是想当然的东西,只有Profile能告诉你真正的效率如何瓶颈在哪里。先用最清楚的逻辑描述出程序的框架,如果真的有时间效率问题那一般来说是算法复杂度的问题,在程序编好且正确之后再考虑细节优化吧。这是耦合度增加的温床。
3.减少全局变量的数量。全局变量是耦合的多发地。在软件的开发过程中甚至有些专门对付它们的模式,例如“Singleton”。相信我,你能减少它们。在这一点上我不想说太多。
4.试图面向对象。我知道很难让人像我一样,每当要在程序中用到某种数据结构——不管是最简单的队列还是复杂些的并查集或者Suffix Tree——我都会编一个class,而且很可能是Template Class。我并不是炫耀,我只是想减少耦合,我只是想使程序更清晰些。“面向对象”这个话题会在本系列中单列一篇文章来做更详尽的分析。本回答被网友采纳