2013-05-24 11 views
5

"const"が大好きです。私は "変わってはいけない"あらゆる変数とメソッドが "const"であることを望みます。問題は、変数またはメソッドが "constであるべき"かどうかは、コールツリーのさらに下にあるメソッド/変数に依存するということです。静的にコードの本体を調べ、 "ボトムアップエンコンプライアンス"を実行するためのツールやプロセスがありますか?C++変数をconstにする

+7

'const'を取る' const'メンバ関数/関数しか使わなかったので、単に 'const'を作成するべきではありません。概念的には変更してはならないことを知っているので、 'const'にする必要があります。 – BoBTFish

答えて

6

私はあなたの質問への答えを知らないが、私は

変数やメソッドが「constのあるべき」かどうかは、さらに下のメソッド/変数に依存していることを主張に反論したいと思いますコールツリー

実際には、constは論理レベルにある必要があります。私。論理的に変更してはならない場合は、何かにマークを付けるべきです。後であれば、コンパイルエラーが発生し、変更の前提や初期の前提を再考する必要があります。

ルールは次のとおりです。

何かがconstのであれば、何かが事実上の変更されていない場合、それは、その後のは、それを作ってみましょう、

ではなく

を変更すべきではありませんconst

0

さまざまな静的それを可能にするアナライザツールです。 Gimpel Flexelintが気になります。

これまで言われていたことは、正しい結果を得られない可能性があることです。たとえば、次のように指定します。

class Wibble { 
    Some_Implementation_Detail *stuff; //PIMPL idiom 
    public: 
    void set_something(int a) { stuff->set(a); } 
}; 

次に、set_somethingをconstにすることができます。これは技術的には正解ですが、この場合は論理的にconstではないため、あまり役に立ちません。

関連する問題