要添加到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...