上QQ阅读APP看书,第一时间看更新
4.5 避免多个参数
C#中的理想方法类型是Niladic方法,即没有任何形式参数(调用时为实际参数)的方法;Monadic方法指仅含有一个参数的方法;Dyadic方法指有两个参数的方法;相应的Triadic方法是含有三个参数的方法。方法若含有多于三个的参数则成为polyadic方法。我们目标是将参数数目控制到最小(最好小于三个)。
在理想的C#程序中,应当尽力避免三个及三个以上参数的方法。并非因为这是不良的实践,主要是为了使程序易读易理解。方法参数过多会对程序员造成视觉压力或烦躁情绪。同时,在参数过多时,智能提示也会变得难以阅读和理解。
以下是一个多参数方法的反面范例。这个方法的功能是更新用户账户信息:
如UpdateUserInfo
方法所示,该方法非常难读。如何将其从多参数方法转换为单一参数方法呢?答案其实很简单——传递UserInfo
对象。首先,在更改方法之前,先来观察一下UserInfo
类的定义:
上述类型包含了需要传递到UpdateUserInfo
方法中的所有信息。因此Update-UserInfo
方法就可以从多参数方法转换为单参数方法了:
上述代码看上去就要好得多了。它更短小、可读性更高。从经验来看,方法参数数目应当小于三个,而理想情况下则不需要任何参数。如果类遵循单一职责原则,那么请像上例一样使用参数对象的模式进行设计。