CodeSOD: 静的状態 ノート

CodeSOD: 静的状態

C++コードレビューで、getterとsetterに関する問題のあるパターンが明らかになりました。getFieldメソッドは、単純なgetterとして期待されていましたが、予期せずsetGetField関数を呼び出していました。このsetGetField関数は、真偽値フラグを使用して、値を設定するか取得するかを判断していました。さらに悪いことに、値はsetGetField内の静的変数に格納されていました。この静的変数は、クラスのすべてのインスタンス間で値を共有し、事実上シングルトンを作成していました。レビュー担当者の最初の反応は信じられないというもので、いたずらではないかと疑っていました。しかし、このパターンを繰り返し目にすることで、フラストレーションを感じ、開発者の能力と採用慣行について疑問を持つようになりました。この欠陥のあるパターンの繰り返し使用は、コードベースの品質と、開発者の基本的なプログラミング原則の理解に関する深刻な懸念事項を浮き彫りにしました。問題の中心は、不適切なカプセル化と、クラスメソッド内での静的変数の使用による意図しない結果にあります。コードの設計は、すべてのインスタンス間で共有状態を生み出し、OOPの基本原則に違反していました。