什么样的函数算好函数——优快云论坛讨论小结

本文探讨了何为好函数,提出好函数应具备明确功能、较少参数,并分享了关于参数个数的见解,建议参数不超过4个。讨论中提到了通过封装、类或对象来管理多个参数,以提高代码可读性和维护性。此外,对于标志位的处理,建议使用枚举类型和位运算符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小结自论坛讨论帖。

 

我的提问:

什么样的函数算好函数??

(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的参数):

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值