到底要不要拆分函数
原创
©著作权归作者所有:来自51CTO博客作者银狐游戏开发资源的原创作品,请联系作者获取转载授权,否则将追究法律责任
问题描述:
怎样的函数才算是有意义的函数?
比如这样的函数有没有意义?
(1)只被调用一次的函数
(2)只有一句实现内容的函数
(3)函数很多的参数
比如一个函数,有很多局部变量,如果要拆成多个函数,那么每个函数都要传递这些局部变量,会造成函数的参数很多。
在拆分函数这个问题上,我们要考虑我们在开发过程中,是以写为主?还是以读为主?
Uncle Bob刚好在这方便做过一些统计,他发现,即使是在开发过程中,大部分时间也是在读代码的。
那么更何况后期维护,即使是修改代码,也是要以读懂代码为基础的。
很显然,我们的开发是以读为主的,因此,便于阅读的代码就是有意义的代码。适当地牺牲“写的方便性”来实现“读的方便性”是有必要的。
就事论事:
(1)只被调用一次的函数是否有意义?
答:如果它有助于阅读,就是有意义的,比如init();
(2)只有一句实现内容的函数是否有意义?
答:如果它有助于阅读,就是有意义的,比如将多个判断条件合并
(3)有很参数的函数是否有意义?
答:如果“读得方便”的代价是“写得很不方便”,这并不意味着它不应该被拆分。而是说明这个函数本身设计不合理。它不只要被拆分,更要被重构。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
大家来决定:python-office运行时的提示信息,要不要删除?
你来决定,我来开发
python 开源项目 -
大任务拆分,让并行嗨起来!
大任务拆分,让并行嗨起来!
System 分治算法 线程池 -
我到底要不要考研
面对考研和工作,该怎么选择呢?
读研 公众号 单片机 -
技术总监到底要不要写代码?
任何问题抛开背景来讨论都是耍流氓
技术总监 代码 -
async/await 函数到底要不要加 try catch ?
?
前端 JavaScript 掘金·金石计划 报错信息 捕获异常 -
要不要转行?
人与人之间的差距其实没那么大,行业之间的差距却很大。
归零 微信 商业模式 互联网时代 -
mysql select 设置类型
MySQL数据类型:数值、日期/时间、字符串(字符)类型、复合类型。 一 选择原则 1.最小的通常更好: 一般情况下选择可以正确存储数据的最小数据类型。越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小,大大减少IO开销。&nbs
mysql select 设置类型 mysql m mysql字段类型 字符串