什么样的函数算好函数——CSDN论坛讨论小结

来源:百度文库 编辑:神马文学网 时间:2024/05/01 16:47:28
什么样的函数算好函数——CSDN论坛讨论小结 收藏
小结自论坛讨论帖。我的提问:什么样的函数算好函数?? (1)我觉得检验一个函数是否好的标准很简单,就是你是否反复使用它。如果你写了个函数,之后却再也没用过它,这个函数就不是个好函数。(2)功能明确,参数不要太多。其实写这个帖子,是因为最近我写了个很通用的函数,带了十几个参数。因为很通用,每次我用的时候都会有点担心,都会回头重新检查这个函数的代码,害怕当时写这个函数的时候有些情况没考虑到。结果,本来我写这个通用函数是为了省时间,可是倒反更花时间了。以致于现在每次我要用这个函数,都会头疼畏惧。不知大家有同感否?这个函数的功能是用来改我设置的诸多标志位的。这所有改标志位共有的步骤是有两个嵌套访问数据表,还有一个轮询发消息,改树控件的标志位。但几乎每种标志位都有自己特别需要处理的地方,害得我每次用这个函数的时候,都要重新检查考量一番。今早上我干脆不用这个函数了,而是把里面循环、轮询的部分拷贝粘贴出来,另外写了个改计数位的函数。虽然有人说“当拷贝粘贴发生的时候,就是你该考虑重用的时候”,可我现在切身体会就是,有时候拷贝粘贴它就是好使啊…… 1.关于参数个数的看法:of123大量重复使用的函数,或要提供给用户或伙伴使用的函数,参数不要超过 4 个。注意,传统工艺生产线上,快速流水的要求之一,就是每个工位处理的零件数不超过 4 个。是有统计学测试依据的。
偶尔使用的函数,参数不要超过 6 个。传统工艺生产线上,对于熟练人员,简单操作的项目不超过 6 项。
极少使用的函数,参数不要超过 10 个。yesvery我的最多参数的函数有8个参数,是用来计算太阳系内的行星轨道的。实在没有办法减少了,而且也不可能拆分。
通常的函数其参数个数也就是一两个,或三四个。 Tiger_Zhao出于统一维护的考虑,建立一个有十几个参数的函数没问题。
既然你每次调用重新检查函数,说明并没用将各种参数的组合情况都实现了。那么你就应该针对各个已实现的情况,做一些封装函数,该函数就作为私有函数仅供封装函数调用。这样通用性和健壮性都能满足要求。smalle直接写个类,在类里面定义几个公用变量,函数直接使用那些公用变量计算,使用时直接设置类里面那几个变量,然后直接执行函数。这样可以减少参数过多而引起混乱的情况sonic_andy用对象来封装参数是个好办法:) <重构-改善既有代码的设计> 中的代码坏味(bad smell)中就有函数包含过多的参数的情况, 此时可以将参数封装为一个对象:参数对象2.关于好函数的看法:bdzwj函数功能尽量单一,目的性明确 易于重用
代码不要太长,太长的要合理拆解细化,然后通过一些封装手段对外暴露接口
参数不要太多,容易混淆,实在没有办法可以通过 定义结构体作为参数,或class或轻量对象实现 SYSSZ(1)无错误;
(2)执行快;
(3)资源占用少;
(4)重用性好;
(5)易用.3.关于标志位sonic_andy 标志位可以通过定义 不同的枚举类型+位运算符 进行传递(类似MsgBox的参数):view plaincopy to clipboardprint?
public enum hzTester  
    hzA = 1  
    hzB = 2  
    hzC = 4  
    hzD = 8  
end enum  
 
public sub test(byval tester as hzTester)  
    if (tester and hzA) = hzA then  
        ' ...  
    end if  
    if (tester and hzB) = hzB then  
        ' ...  
    end if  
    ' ...  
end sub  
 
' 调用  
call test(hzA or hzC or hzD)   本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/slowgrace/archive/2009/02/17/3900237.aspx