如何复用性更好的函数,可能是软件开发者追求的目标之一.
为什么要求复用性好?或者复用性好的函数能带来什么好处?我们可能需要看看它的反面:复用性不好带来了什么坏处?
1. 无法复用的函数,在扩展新功能时,必须要另外新增一个函数.
久而久之, 代码量会变大,维护会需要更多的人力和时间.
2. 无法复用的函数,在测试方面可能会变得困难.
一个函数的使用,乐观的目标是传入相同的参数,得到一个相同的返回值,不受调用次数的限制.但是复用性不好的函数可能在2次以上的调用时返回不相同的值,即使传入参数完全一致.想象下,测试一次和多次结果居然不一致,以哪次为正确标准. 这样的不可测性,是软件开发维护的噩梦, 很像定时炸弹.
3. 无法复用的函数,很可能是无法重入的.
太多的无法复用的函数, 在多线程重入时,其返回值不可控.
4. 大量无法复用的函数,出现bug, 会导致修改量和测试工作量增大.
因为无法复用,所以大量新增函数来实现新的功能,但是大量复用性不好的函数,修改bug, 即使是相同原因的bug,其修改量和测试工作量剧增. 需要说明的是: 其中的工作量很大部分是重复的.
通过以上无法复用函数的坏处,我们来看看复用性好的优点:
1. 复用性好, 代码量会变小, 代码收敛.
代码量小,自然维护的人力和时间就会下降;
2. 复用性好, 测一次和测多次返回值一致.
复用性好,至少保证了可测性,无论多少次单元测试,结果一致.
3. 复用性好的函数, 不能保证可重入.
但是可复用至少是可重入的前提基础.
4. 复用性好, 修改bug的工作量也减少.
复用性好, 相同原因导致的bug需要修改的代码量自然降低.