第45條 通用程式設計 將區域性變數的作用於最小化

2021-07-11 15:00:42 字數 670 閱讀 1961

將區域性變數的作用域最小化,可以增強**的可讀性和可維護性,並降低出錯的可能性。

1、最強有力的做法就是在第一次使用變數的地方對其進行宣告。

在迴圈中提供了特殊的機會來將變數的作用域最小化。對於for迴圈,允許宣告迴圈變數,且它們的作用域被限定在正好需要的範圍之內。因此,如果在迴圈終止之後不再需要迴圈變數的內容,

for迴圈就優先於

while

迴圈。示例1:

iteratori=c.iterator();

while(i.hasnext())

iteratori2=c.iterator();

while(i.hasnext())

同時第二個迴圈中還包含了乙個"剪下-貼上"錯誤:本來是要初始化乙個新的迴圈變數i2,確使用了舊的迴圈變數i,並且i還在有效的範圍之內,**能通過編譯並且不會丟擲異常。

示例2:

for(element e:c)

for(element e:c2)

這種方式就不存在"剪下-貼上"錯誤

2、還有一種做法就是使方法小而集中。如果把兩個操作合併到同乙個方法中,與其中乙個操作相關的區域性變數就有可能會出現在執行另乙個操作的**範圍之內。為了防止這種情況發生,只要把這個方法分成兩個,每個方法各自執行乙個操作。

45 物件導向成員變數和區域性變數的區別

在類中的位置不同 成員變數 在類中方法外 區域性變數 在方法定義中或者方法宣告上 在記憶體中的位置不同 成員變數 在堆記憶體中 區域性變數 在棧記憶體中 生命週期不同 成員變數 隨著物件的產生而存在,物件的消失而消失 區域性變數 隨著方法的呼叫而存在,隨著方法的消失而消失 初始化值不同 成員變數 有...

第1條 優先使用隱式型別的區域性變數

條初始化語句的人肯定會把q的型別理解成字串,而實際上,編譯器所判 定的型別也正是字串。像這樣通過查詢表示式來初始化的變數,其型別通 常是較為明確的,因此,不妨用var來宣告。反之,若是初始化變數所用的 那條表示式無法清晰地傳達出適當的語義,從而令閱讀 的人容易誤解其 型別,那麼就不應該用var來宣告...

C 程式設計經驗 返回區域性變數的討論

返回區域性變數沒問題 如果返回區域性變數有問題,函式的意義還有嗎?全域性變數還用返回嗎?返回指向區域性變數的指標才有問題,函式退棧之後,區域性變數消失,指標將指向未知區域,所以出現問題。返回區域性變數的引用也是絕對不可以的。引用只是變數的乙個別名,變數本體都不存在了,引用當然也沒有任何意義。還有,如...