编程好习惯之理清函数参数
遇到的问题
每当看到这样的函数调用时,就会觉得诧异。
复制代码
如上,函数 sort
知道是要做排序,但有个 2 选 1 的条件,需要查看参数定义或实现代码才能明白;而函数 decode
则可能猜不出第三个参数的用意,至于 dosomething
的第二个参数,则只能当做特事特办了。
像这样的函数定义,在使用时也会觉得别扭:
可能是函数包含了多个功能,不同的调用方只用到其中部分功能
也可能是功能是一体的,但有些配置和调用上下文无关的,函数这样定义了,不得不传入
分析
随着业务成长起来的代码,需求开始都是简单的,后来慢慢变复杂,就可能会体现在原先封装好的函数,需要增加一个参数来应对不同的需求。
如果判断是个二选一的情况,就会加个 boolean
类型的参数到参数列表末尾。
更复杂的情况,则会注入一些只有个别场景需要的参数,而其他情况不需要,就只能传入 undefined
。
解决
如果要修改的函数有多处调用,则尽量保持原函数定义,采用增加新函数来实现满足新需求的功能,一般可以将新函数命名为 xxxExt
,如:sortExt
、decodeExt
,原先的函数定义可以通过调用 xxxExt
的方式来实现,以达到复用的目的。
复制代码
版权声明: 本文为 InfoQ 作者【顿晓】的原创文章。
原文链接:【http://xie.infoq.cn/article/ad43c31311e688afc19a89807】。文章转载请联系作者。
评论