![](/img/trans.png)
[英]When to create a new variable to store a value rather than calling function multiple times?
[英]Is it inefficient to initialize a variable multiple times rather than reassigning one?
我正在構建一個應用程序,我必須在其中循環一組對象,並且對於每個對象我都調用一個助手 function。
在那個助手 function 中,我需要將一個變量傳遞給另一個助手 function。
我的問題是,每次都在第一個助手 function 中初始化該變量是不好的做法嗎?
基本上:
示例 1:在 funcA 中初始化 b
funcA(byte[] bytes) {
...
byte b = bytes[0];
funcB(b);
}
while(...) {
byte[] bytes;
funcA(bytes);
}
或者
示例 2:在外部初始化 b 並重新分配
byte b;
funcA(byte[] bytes) {
...
b = bytes[0];
funcB(b);
}
while(...) {
byte[] bytes;
funcA(bytes);
}
哪個更好? (我調用 funcA 大約 20-30 次)我想我可以做funcB(bytes[0])
但我想將它分配給一個變量以提高可讀性。
每次都不要在幫助程序 function 中初始化該變量是不好的做法。
一般來說,變量應該定義在最窄的 scope 中。 僅在使用變量的地方定義變量而不在不使用變量時保留變量會更有效。 “在這里創建新變量”基本上是免費的; 它只是成為在堆棧上為此 function 分配的 memory 的一部分。
性能問題幾乎不應該驅動您的系統設計。 首先確保您的代碼從邏輯角度來看是有意義的並相應地實現它,然后測量實際執行時間、memory 使用情況等。
在您的情況下,應該在需要的地方定義和初始化該數組。 我假設您在其中傳遞了一些值,因此在while
中聲明它並進一步傳遞給funcA
是完全有意義的。 如果您要將空的未初始化 object 傳遞給您的 function ,那么您很可能做錯了什么,實際上沒有必要在所有地方傳遞 object。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.