The Rule of Method Design
2006-04-20 16:42
357 查看
读了Jeffrey Palermo 的随笔How to design a single method后,对他所述的方法(Method)设计的准则大部分比较赞同。方法的设计是类的设计的一部分(在面向对象设计的前提下),是比较细节的问题,但也是关乎设计是否优秀的细节。
Jeffrey Palermo 提到了下面的一些准则(斜体部分是我的理解):
1、方法的命名应清楚地表达出此方法所做的事情。
命名其实也是一门学问——看起来简单,但往往比较有经验的设计师才能作出比较合适的命名。不当的命名常常让他人误会,带来理解上的困难。一般方法的命名使用动词或者动词+名词。比如Append、Push、ShowDialog、GetName等。
2、一个方法做且只做一件事情。
有人常常一个方法中好几件事情,这是没有正确划分各个方法职责的结果。做一件比较复杂的事情,可能需要分为几个步骤来完成,我们把它拆为几个方法(一般为private的方法),每个方法完成其中一个步骤。当然,这需要根据实际情况做合适的划分。
3、一个方法要么做一些事情,要么返回一些东西。如果该方法返回一些东西的话,调用它无数次也不应当产生负面影响。
4、一个方法所占的篇幅不应超出一屏。
这是经验之谈,如果一个方法里面你写了大量的代码(比如超过50行),那该方法需要重构了。Jeffrey Palermo 甚至说一个方法最好少于10行。
5、方法的参数要少。
如果一个方法必须大量的参数,那可以将这些信息封装到一个Object中,现成的例子是.net framework中的ProcessStartInfo。个人认为一个方法的参数最好不超过5个。
6、方法仅仅依赖于方法的参数,或者由构造函数传入的类成员。
7、在合适的地方捕捉异常。
在需要对异常进行处理的地方捕捉异常,否则让其传播。
对于方法的设计准则,在不同的语言中可能会不尽相同。比如在.net中会对传入的参数做一些检查,而在native C/C++的代码中(比如wcscpy函数)总是认为调用者会保证参数正确,而根本不作任何检查,看下面代码:
wchar_t * __cdecl wcscpy(wchar_t * dst, const wchar_t * src)
public static string Copy(string str)
准则归准则,在实际开发中,还是要看具体情况。
Jeffrey Palermo 提到了下面的一些准则(斜体部分是我的理解):
1、方法的命名应清楚地表达出此方法所做的事情。
命名其实也是一门学问——看起来简单,但往往比较有经验的设计师才能作出比较合适的命名。不当的命名常常让他人误会,带来理解上的困难。一般方法的命名使用动词或者动词+名词。比如Append、Push、ShowDialog、GetName等。
2、一个方法做且只做一件事情。
有人常常一个方法中好几件事情,这是没有正确划分各个方法职责的结果。做一件比较复杂的事情,可能需要分为几个步骤来完成,我们把它拆为几个方法(一般为private的方法),每个方法完成其中一个步骤。当然,这需要根据实际情况做合适的划分。
3、一个方法要么做一些事情,要么返回一些东西。如果该方法返回一些东西的话,调用它无数次也不应当产生负面影响。
4、一个方法所占的篇幅不应超出一屏。
这是经验之谈,如果一个方法里面你写了大量的代码(比如超过50行),那该方法需要重构了。Jeffrey Palermo 甚至说一个方法最好少于10行。
5、方法的参数要少。
如果一个方法必须大量的参数,那可以将这些信息封装到一个Object中,现成的例子是.net framework中的ProcessStartInfo。个人认为一个方法的参数最好不超过5个。
6、方法仅仅依赖于方法的参数,或者由构造函数传入的类成员。
7、在合适的地方捕捉异常。
在需要对异常进行处理的地方捕捉异常,否则让其传播。
对于方法的设计准则,在不同的语言中可能会不尽相同。比如在.net中会对传入的参数做一些检查,而在native C/C++的代码中(比如wcscpy函数)总是认为调用者会保证参数正确,而根本不作任何检查,看下面代码:
wchar_t * __cdecl wcscpy(wchar_t * dst, const wchar_t * src)
public static string Copy(string str)
准则归准则,在实际开发中,还是要看具体情况。
相关文章推荐
- 上周技术关注:The Rule of Method Design
- The Rule of Method Design
- Research on Computer Aided Design Method for the particles distribution of Table-tennis racket
- The Design Method of Vibrating Screen Dynamic Design
- The Golden Rule of API Design
- The Golden Rule of API Design
- [Eclipse手册]错误The method xxx of type must override a superclass method
- C to FPGA Who’ll Use the Next Generation of Design Tools?
- What is The Rule of Three?
- The method of type must override a superclass method
- 读重构 (Refactoring:Improving the Design of Existing Code)
- The visual design of Web 2.0
- The method of type must override a superclass method解决方式
- The Handbook of Human Factors in Web Design
- The number of method references in a .dex file cannot exceed 64K.(转)
- The use method of Transation
- 使用 @Override 出现错误:The method getAll() of type CategoryServiceImpl must override a superclass method
- The Cheap KD 10 design is not too far of a departure
- The Design of COVE: a Collaborative Ocean Visualization Environment
- The Design of Sites: Patterns, Principles, and Processes for Crafting a Customer-Centered Web Experi