SutterとAlexandrescuは、 「非メンバーの非フレンド関数を作成することを好む」というタイトルの(そうでない場合は)優れた本C ++ Coding Standardsのアイテム44で、クラスのメンバーに本当にアクセスする必要がある関数のみをそのクラスのメンバーにすることを推奨しています。メンバー関数のみを使用して記述できる他のすべての操作は、クラスの一部であってはなりません。彼らは非会員であり、非友人でなければなりません。議論は次のとおりです。
- クラスの内部にアクセスする必要のあるコードが少ないため、カプセル化が促進されます。
- 一部の関数がメンバーであるかどうかを毎回推測する必要がないため、関数テンプレートの作成が容易になります。
- クラスを小さく保つため、テストと保守が容易になります。
これらの引数には値がありますが、大きな欠点があります。IDEがこれらの関数を見つけるのに役立ちません。ある種のオブジェクトがあり、そのオブジェクトで使用できる操作を確認したい場合は、「pMysteriousObject->
」と入力してメンバー関数のリストを取得することはできなくなります。
クリーンなデザインを維持することは、最終的にはプログラミング作業を楽にすることです。しかし、これは実際に私のものをはるかに難しくします。
だから私はそれが本当にトラブルの価値があるのだろうかと思っています。どのように対処しますか?