在Java中,我在网上搜索了如何使用默认参数创建函数,我了解到我需要再次编写函数,参数较少。
示例:
f (a, b) {..}
f (a) {..}
f () {..}
现在,有两种编码这些功能的方法摆在我面前:
将算法复制粘贴到3种方法中并进行修改,用我需要的常量值替换参数:
f (a, b) { //algorithm with a and b }
f (a) { //algorithm with a and a constant }
f () { //algorithm with 2 constants }
优势:优化运行速度
缺点:当我需要对我的功能进行修改时,我将不得不多次更改代码我已经写了这个功能(这里有3次)。
通过在参数中给出常量来返回上一个函数:
f (a, b) { //algorithm }
f (a) { return f (a, 1); }
f () { return f ("x"); }
优点:易于阅读,代码灵活。
缺点:当一个函数调用另一个函数时,它需要更多的运行时间和更多的内存(也许我对这一点感到错误,我真的很想)。
哪种方式更好?
答案 0 :(得分:3)
当然你应该更喜欢第二种方式。复制代码是你应该避免的。它使您的代码更难维护,并且是引入错误的最佳方式。你在这里做的是过早的微观优化:
过早优化是万恶之源,你的问题就是另一个完美的例子。
在出现性能问题之前,您甚至不应该考虑优化代码,并且您已经证明问题出现在该代码中。 通常,性能问题来自IO(文件读取,数据库查询等),或来自大型数据集上的错误算法(O(n2)而不是O(n))。不是来自1或2个方法调用。