我是编程的新手,在很多情况下,我发现自己是否应该复制粘贴代码以使程序运行得更快,或通过强制程序通过其他循环来收集方法。我会给你一个例子,就像我目前的情况一样:
解决方案1 :( copypaste代码)
button1.clickevent: saveValue1Method()
button2.clickevent: saveValue2Method()
button3.clickevent: saveValue3Method()
saveValue1Method()
{
doSomethingWithValue1()
buttonlabel.text = "you clicked a button";
doThis();
}
saveValue2Method()
{
doSomethingWithValue2()
buttonlabel.text = "you clicked a button";
doThis();
}
saveValue3Method()
{
doSomethingWithValue3()
buttonlabel.text = "you clicked a button";
doThis();
}
dosomethingwithValue1()
{
mylabel.text = 1;
}
doSomethingWithValue2()
{
mylabel.text = 2;
....
}
doSomethingWithValue3()
{
mylabel.text = 3;
....
}
解决方案2 :(更多程序指令)
button1.clickevent: saveValueMethod(1)
button1.clickevent: saveValueMethod(2)
button1.clickevent: saveValueMethod(3)
saveValueMethod(int i)
{
if (i == 1)
{
doSomethingWithValue(1)
}
if (i == 2)
{
doSomethingWithValue(2)
}
if (i == 3)
{
doSomethingWithValue(3)
}
buttonlabel.text = "you clicked a button";
doThis();
}
doSomethingWithValue(int j)
{
if (j == 1)
{
mylabel.text = 1;
...
}
if (j == 2)
{
mylabel.text = 2;
}
if (j == 3)
mylabel.text = 3;
}
请记住,这只是一个简化的例子,并不一定有意义。在许多情况下,我必须循环遍历很多值,而不仅仅是1,2或3。
哪种概念是好的编码?
答案 0 :(得分:1)
通常,您应该遵循DRY principles (don't repeat yourself)并且永远不要复制代码块。
将代码分解为常用函数将使代码更易于阅读和维护,并且不太可能在性能上产生显着差异。它被普遍认为是“正确”的编码方式。
即使花费大量时间来优化性能代码,很少是函数调用是导致速度减慢的主要原因,而其他更重要的算法或任务通常是提高性能的杠杆方式。但是,请注意,在99.99%的代码中,实际代码字节的性能很少成为问题。因此,最初编写代码是为了获得最大的清晰度,可重用性,可读性和可维护性,然后,只有当您已经证明某个地方确实存在性能问题并且已经准确测量了导致问题的原因时,您才会考虑重新优化代码行让它跑得更快。