差分

ナビゲーションに移動 検索に移動

副作用

138 バイト追加, 2015年3月8日 (日) 00:05
編集の要約なし
==オブジェクト指向で顕著になる==
とくに肥大化したオブジェクト指向プログラミング言語を使用したプロジェクトで問題視されることが多い。たとえば副作用はとくに肥大化した[[C Sharp|C#オブジェクト指向プログラミング言語]]などのクラスベースオブジェクト指向におけるフィールド変数(言語によってはメンバ変数やインスタンス変数とも呼ばれる)やプロパティは、実質的に[[C言語]]などの[[グローバル変数]]となんら変わらなく、その内容がメソッドの動作に影響を及ぼすため、これらをすべて把握していなければ正しい利用は難しくなる。を使用したプロジェクトで問題視されることが多い。
また、オブジェクト指向ではフィールド変数(言語によってはメンバ変数やインスタンス変数とも呼ばれる)やプロパティがクラスになっていることも多いため、その先々まで同様にすべてを把握していなければならない。小規模なうちはC言語のグローバル変数よりも影響範囲は少ないように思えるが、階層構造が複雑化した後には地獄である。まさに「たとえば[[C Sharp|C#]]などの[[クラスベースオブジェクト指向]]における[[フィールド変数]]([[言語]]によっては[[メンバ変数]]や[[インスタンス変数]]とも呼ばれる)や[[プロパティ]]は、実質的に[[C言語]]などの[[グローバル変数]]となんら変わらなく、その内容がメソッドの動作に影響を及ぼすため、これらをすべて把握していなければ正しい利用は難しくなる。 また、[[オブジェクト指向]]では[[フィールド変数]]や[[プロパティ]]が[[クラス]]になっていることも多いため、その先々の[[フィールド変数]]や[[プロパティ]]がもたらす副作用まで同様にすべてを把握していなければならない。オブジェクト指向は小規模なうちはC言語のグローバル変数よりも影響範囲は少ないように思えるがプロジェクトが肥大化し階層構造が複雑化した後にはデスマーチへの片道切符であるといえ、まさに「[[階層化の有害性]]」であるともいえる。
プロジェクトの規模が小さいうちは問題になることは少ないが、複数人が関わるプロジェクトでは認識の食い違いなどが発生し、最終的に殴り合いになる。
匿名利用者

案内メニュー