代码重用能力VS程序效率
Code Reuse ability VS program efficiency
我是编程新手,在很多情况下,我发现自己很纠结是应该复制粘贴代码以使程序 运行 更快,还是通过强制程序通过额外的过程来收集方法循环。我给你举个例子,有点像我现在的情况:
解决方案1:(复制粘贴代码)
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.
哪个概念是好的编码?
一般来说,您应该遵循 DRY principles (don't repeat yourself) 并且永远不要复制代码块。
将您的代码分解为通用函数将使您的代码更易于阅读和维护,并且不太可能对性能产生重大影响。它被普遍认为是 "right" 编码方式。
即使花费大量时间优化代码以提高性能,函数调用也很少是导致性能下降的主要原因,算法或任务的其他更重要的方面通常是一种更有效的改进方式表现。但是,请注意,在 99.99% 的所有代码中,实际代码字节的性能很少成为问题。因此,最初编写代码是为了最大的清晰度、可重用性、可读性和可维护性,然后,只有当你证明你确实在某处存在性能问题并且已经准确测量了导致问题的原因时,你才会考虑重新优化你的代码行以使其 运行 更快。
我是编程新手,在很多情况下,我发现自己很纠结是应该复制粘贴代码以使程序 运行 更快,还是通过强制程序通过额外的过程来收集方法循环。我给你举个例子,有点像我现在的情况:
解决方案1:(复制粘贴代码)
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.
哪个概念是好的编码?
一般来说,您应该遵循 DRY principles (don't repeat yourself) 并且永远不要复制代码块。
将您的代码分解为通用函数将使您的代码更易于阅读和维护,并且不太可能对性能产生重大影响。它被普遍认为是 "right" 编码方式。
即使花费大量时间优化代码以提高性能,函数调用也很少是导致性能下降的主要原因,算法或任务的其他更重要的方面通常是一种更有效的改进方式表现。但是,请注意,在 99.99% 的所有代码中,实际代码字节的性能很少成为问题。因此,最初编写代码是为了最大的清晰度、可重用性、可读性和可维护性,然后,只有当你证明你确实在某处存在性能问题并且已经准确测量了导致问题的原因时,你才会考虑重新优化你的代码行以使其 运行 更快。