对封装性和包裹弹性的理解——129
越少代码可以看到数据(也就是访问它),越多的数据可被封装,而我们也越能自由地改变对象数据,例如改变成员变量的数量、类型等等。
namespace的使用——130
在C++,比较自然的做法是让非成员函数和涉及到的类位于同一个namesapce内:
namespace WebBrowserStuff{
class WebBrowser {...};
void clearBrowser(WebBrowser& wb);
....
}
可以将一些便利函数放在多个头文件内但隶属同一个命名空间——131
将所有便利函数放在多个头文件内但隶属同一个命名空间,意味客户可以轻松扩展这一组便利函数。他们需要做的就是添加更多non-member non-friend函数到此命名空间内。
//头文件"webbrowser.h"
namespace WebBrowserStuff{
class WebBrowser{...};
...
}
//头文件 "webbrowserbookmarks.h”
namespace WebBrowserStuff{
... //与书签相关的便利函数
}
//头文件“webbrowsercookies.h”
namespace WebBrowserStuff{
... //与cookie相关的便利函数
}
总结——132
宁可拿non-member non-friend函数替换member函数。这样做可以增加封装性、包裹弹性和机能扩充性。