The Rule of Method Design


读了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函数)总是认为调用者会保证参数正确,而根本不作任何检查,看下面代码:
None.gif wchar_t  *  __cdecl wcscpy(wchar_t  *  dst,  const  wchar_t  *  src)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif        wchar_t 
* cp = dst;
InBlock.gif
InBlock.gif        
while*cp++ = *src++ )
ExpandedSubBlockStart.gifContractedSubBlock.gif                ;               
/**//* Copy src over dst */
InBlock.gif
InBlock.gif        
return( dst );
ExpandedBlockEnd.gif}

而在c#中:
None.gif public   static   string  Copy( string  str)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif      
if (str == null)
ExpandedSubBlockStart.gifContractedSubBlock.gif      
dot.gif{
InBlock.gif            
throw new ArgumentNullException("str");
ExpandedSubBlockEnd.gif      }

InBlock.gif      
string text1 = string.FastAllocateString(str.Length);
InBlock.gif      
string.FillString(text1, 0, str);
InBlock.gif      
return text1;
ExpandedBlockEnd.gif}

None.gif
None.gif 
None.gif

准则归准则,在实际开发中,还是要看具体情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在设计方面,layout design rule(布局设计规则)是指在设计过程中需要遵循的一系列规则和准则,旨在确保设计的合理性、可读性和美观性。 首先,布局设计规则要求设计要有适当的可读性。这包括字体选择、字号、行高等,以确保文本易于辨认和阅读。同时,要遵循信息的层次性,使用标题、副标题、段落和引用等元素来组织内容,使读者能够快速浏览和理解信息。 其次,布局设计规则要求设计要有明确的信息层次结构。通过使用合理的页面区块划分,如顶部导航、侧边栏和主体内容区域等,来使页面的结构清晰明了。同时,合理运用空白和间距,以增强内容的突出显示和可读性。 此外,布局设计规则强调设计要有合适的一致性和统一性。这意味着使用相似的样式和排列方式来保持整体的协调性。一致性也涉及到颜色、图标和按钮等元素的使用,使得用户对界面的适应性更高,降低学习成本。 最后,布局设计规则要考虑设计的响应性和适应性。随着移动设备的普及,设计应该能够在不同尺寸的屏幕上进行自适应,并且保持良好的可视和可操作性。 总之,layout design rule是指在设计过程中需要遵循的一系列规则和准则,它们确保设计的可读性、信息层次性、一致性和响应性。遵循这些规则可以使设计更加合理、易读、美观,并提供良好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值