close

原文:
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Local_Variables

變數的scope越小越好。若scope越大,意味著越多地方可以修改到這個變數;也意味著此變數造成的bug影響的範圍也會越大。

 

C++允許你在function裡的任何一個地方宣告變數,這是為了讓你可以盡可能地縮短變數的宣告和變數的使用之間的距離,因而提高了程式的可讀性。早期C語言規定變數的宣告必須在statement之前,所以只能在函數的一開頭宣告所有所需的變數,programmer還必須在變數的後面用註解,來說明此變數的用途以增加程式的可讀性,實在是很不方便。

變數的宣告和變數的使用之間的距離要越接近越好,但是有個例外,就是在涉及迴圈的時候,Google C++ Style Guide給予了以下的例子:

// Inefficient implementation:
for (int i = 0; i < 1000000; ++i)
{
    Foo f;  // My ctor and dtor get called 1000000 times each.
    f.DoSomething(i);
}

在這個迴圈中,f的ctor和dtor被呼叫了1000000次,這是很沒效率的寫法;在這種情況下,將f移出迴圈是被允許的。

 

在變數宣告時直接給予初值,以免誤用了還沒給予初值的變數(此時變數的值為垃圾值),而造成undefined behavior。目前有些compiler會擋下這件事,當你使用未給予初值的變數將會出現warning甚至是Error,例如使用VC++ 2008 Express會出現下列警告訊息:

#include <iostream>

int main()
{
    int a;

    std::cout << a << std::endl;

    return 0;
}

warning C4700: uninitialized local variable 'a' used

當然這不是所有的compiler都有支援,當變數宣告時直接給予初值是一個好習慣。

arrow
arrow
    文章標籤
    C++
    全站熱搜
    創作者介紹
    創作者 coherence 的頭像
    coherence

    打字猴

    coherence 發表在 痞客邦 留言(0) 人氣()