我有一个特定的函数,它使用相同的代码行(很少,2-5,这取决于我如何修改它以适应将来可能的使用)代码行4次。
我看了this question,但对我来说不够具体,也不符合我想要的方向。
下面是一些伪
function myFunction() {
if (something) {
// Code line 1
// Code line 2
// Code line 3
}
else if (somethingElse) {
// Code line 1
// Code line 2
// Code line 3
}
else if (anotherThing) {
// Code line 1
// Code line 2
// Code line 3
}
else if (theLastThing) {
// Code line 1
// Code line 2
// Code line 3
}
else {
// Not previously used code
}
}相同的3行代码被复制/粘贴(如果满足这些条件,则构造相同的对象)。创建一个函数,将所有这些信息传递给它,并在它完成后返回必要的信息,这是一个很好的实践吗?所有这些条件语句都在一个循环中,该循环最多可运行1000次。
我不确定准备堆栈框架的成本是否(?)跳入另一个函数比1000次迭代花费更大,因此值得使用15行重复代码。显然,函数化它将使它更易读,但这是非常具体的功能,不使用任何其他地方。为了消除复制/粘贴心态,我可以编写的函数如下:
function myHelperFunction(someParameter, someOtherParameter) {
// Code line 1
// Code line 2
// Code line 3
return usefulInformation;
}然后将所有条件语句中的函数调用为每条条件语句1行:
myHelperFunction(myPassedParameter, myOtherPassedParameter);基本上把这12条线变成4条。
所以问题--,这是一个很好的实践吗?在一般的中,为了节省一些空间和可读性,为少量代码创建一个新的函数吗?还是跳跃功能的代价太大了,不值得呢?一个应该总是为将来可能复制/粘贴的代码创建一个新函数吗?
PS -我理解,如果在不同的(类)或源文件中使用这段代码,那么将其转换为函数是合乎逻辑的,以避免为了进行更改而需要找到复制/粘贴的所有位置。但我说的是或多或少的单文件/单类或函数中的困境。此外,如果我没有正确地修改我的标签/标题,请随意修改它。我不太清楚如何正确地标出这篇文章的标题/标签。
发布于 2013-06-27 17:06:10
是的,创建一个函数,一般来说,你应该遵循干性原则。不要重复你自己。
yourself
对于这种情况,堆栈操作将是最小的。见Imre Kerr对您问题的评论。
这不仅仅是为了可读性。原因太多了。可维护性是巨大的。如果这段代码必须改变,那么其他人就会很痛苦,试图找出每一个地方来改变它。只需在一个地方更改代码就好多了。
https://stackoverflow.com/questions/17349086
复制相似问题