特定のエンジニアリングアプリケーション用のクラスライブラリを設計しようとしています。また、クラスと名前空間の命名規則が適切であることを確認しようとしています。
私は次の状況にあります:
namespace Vehicle{
class Wheel{...} //base class for Wheel objects
class Engine{...} //base class for Engine objects
...
namespace Truck{
class Wheel: Vehicle.Wheel{...} //Truck specific Wheel object
class Engine: Vehicle.Engine{...} //Truck specific Engine object
...
}
namespace Car{
class Wheel: Vehicle.Wheel{...} //Car specific Wheel object
class Engine: Vehicle.Engine{...} //Car specific Engine object
...
}
...
}
コードは、これらすべてのクラスを同じスコープ内から参照する必要がある方法で使用されます。次の状況が発生する可能性があります。
...
Vehicle.Wheel.DoSomething();
Vehicle.Truck.Wheel.DoSomething();
Vehicle.Car.Wheel.DoSomething();
...
このような状況では、クラスにもっと具体的な名前を付けたほうがいいですか
namespace Car{
class CarWheel: Vehicle.Wheel{...} //Car specific Wheel object
...
}
または、最初の例に示すように名前を残し、わかりやすくするために名前空間にエンコードされている情報に依存しますか?後者のアプローチでは、このライブラリを使用するコードを明確にするために、alaisingを利用したいと思います。
持っているのは冗長なようです:
Vehicle.Car.CarWheel
また
Vehicle.Truck.TruckEngine
しかし、私はまた、非常にわかりやすく具体的なクラス名を付けたいと思っています。
哲学的に、私が求めているのは、クラス名が十分に説明的であるかどうかを検討するときに、クラス名の一部として名前空間を含めるかどうかです。