ほとんどの場合、メンバー関数よりも非メンバーのフレンド関数を優先することに関するScott Myers のアドバイスに基づいて、それらが意味をなす - これを行うために名前空間を設定するための推奨される規則は何ですか?
特に、すべてを名前空間に入れ子にして、読みにくいコードになってしまうのをどのように回避しますか。そのような:
namespace Vector
{
class Vector2 {...};
bool IsUnitVector(const Vector2& vector);
}
次のような呼び出しが発生します。
Vector::Vector2 position;
if (Vector::IsUnitVector(position)) {...}
たとえば、次のようなものは許容されますか。
class Vector2 {...};
namespace Vector2
{
bool IsUnitVector(const Vector2& vector);
}
より読みやすく、より論理的にグループ化された呼び出しを許可するには、次のようにします。
Vector2 position;
if (Vector2::IsUnitVector(position) {...}