建议143:方法抽象级别应在同一层次
看下面代码:
class SampleClass { public void Init() { //本地初始化代码1 //本地初始化代码2 RemoteInit(); } void RemoteInit() { //远程初始化代码1 //远程初始化代码2 } }
Init方法本意要完成初始化动作,而初始化包括本地初始化和远程初始化。这段代码中,Init方法内部代码的组织结构是本地初始化直接运行在方法内部,而远程初始化代码却被封装为一个方法在这里被调用。这显然是不妥当的,应为本地初始化和远程初始化的地位是相当的。如果远程初始化代码作为方法存在,则本地初始化代码也应该作为方法存在。
所以,上面代码应该重构为:
class SampleClass { public void Init() { LocalInit(); RemoteInit(); } void LocalInit() { //本地初始化代码1 //本地初始化代码2 } void RemoteInit() { //远程初始化代码1 //远程初始化代码2 } }
重构后的代码看上去清晰明了,所有的方法的抽象级别都在一个层次上,使读者一眼看上去就知道Init方法完成了什么样的功能。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技
本文讨论了在软件设计中保持方法抽象级别的统一性的重要性,并通过一个重构案例说明如何将同等重要的功能实现以相同的方式封装,从而提高代码的可读性和维护性。

631

被折叠的 条评论
为什么被折叠?



