awkspの回答に追加するために、短い例を考えてみましょう。多くの場合、公開したくないプライベート メソッドで実装されたパブリック API メソッドがあります。コードを読みやすくするために、これらのメソッドのコードを互いに近づけたいと思うことがよくあります。そうでない場合は、次のようになります。
public:
void api1() {
do_some_stuff();
private_method();
some_other_stuff();
}
void api2() {
do_something();
}
int api3() {
int i = a_computation();
return i + A_CONSTANT;
}
private:
void private_method() {
do_clever_stuff();
api1_implementation_details();
}
これは読みにくいです。private_method
それを使用する唯一の方法ではありませんapi1
。このコードの公開/非公開の分割は、論理的な意味を持ちません。メソッドの可視性ではなく、ロジックによってコードを整理する必要があります。
私はこれを見るのがとても好きです:
// I can read the whole logic of this method without any clutter
public void api1() {
do_some_stuff();
private_method();
some_other_stuff();
}
private void private_method() {
do_clever_stuff();
api1_implementation_details();
}
// and so on...