變數使用時的最小範疇原則

變數的作用範圍及生命週期

最小範疇原則

在 C/C++ 程式中每一個使用到的變數都要事先宣告, 變數的宣告和變數的使用愈靠近愈好 就是這裡所謂的最小範疇原則。

目的

但是 "變數的宣告和使用愈靠近愈好" 常常給人感覺其最主要的目的是方便程式閱讀與維護, 更深一層的意義是我們希望變數可以被使用的範疇 (scope) 越小越好,如此被 誤用 的情況可降到最低, 閱讀程式時使此變數對與它無關的程式碼的依存性到最低。

範例

你在閱讀某一列程式時所有在 作用範疇 中的變數都可能和此列程式有關, 因此減少這些變數, 可以減低閱讀及維護程式的困難度。

例如:

void main() { int i,j; float tmp; for(i=0; i<100: i++) { ....... for (j=0; j<10; j++) { tmp = sqrt(i*j+10); if (tmp < 2.54) { .... } } } } void main() { ............ int i; for (i=0; ... { ....... int j; for (j=0..... { float tmp; tmp= } } }

注意:

  1. C++ 中才允許不在區塊的最前端宣告變數
    ANSI C 只允許在區塊的最前端宣告變數 如果一定要宣告再一起的話可以再多加大刮號,如下例: 這多加的大刮號還可以避免在 for (j=0;...){} 迴圈後繼續使用變數 j。

  2. 有時基於效率的考量,我們不會把變數宣告在迴圈之內, 那樣子的話每次進入迴圈都要多處理這個變數 (其實在 stack 上的變數無所謂, 除非你考慮到 C++ 中建構元執行的問題, 比較花時間的是用 malloc() 配置記憶體), 如上例可以宣告為

程式設計課程 首頁
by Pei-yih Ting
E-mail: pyting@cs.ntou.edu.tw