Обычно пространства имен являются множественными, чтобы не конфликтовать с именами классов (например, вероятно, вы захотите, чтобы классы имели имена Vehicle
и Car
), поэтому я бы склонен использовать пространства имен следующим образом:
namespace Vehicles;
namespace Vehicles.Cars;
namespace Vehicles.Trucks;
Что касается имен классов, было бы типично ставить префикс имени класса со специализацией, особенно если они, вероятно, будут использоваться вместе, так что вы получите что-то вроде:
class CarWheel : Wheel
class TruckWheel : Wheel
Этот тип «избыточности» можно увидеть повсюду в .NET Framework, например, в пространстве имен System.Xml
практически все классы имеют префикс Xml
, или в пространстве имен System.Data.SqlClient
большинство классов имеют префикс Sql
. Это означает, что вы можете импортировать пространства имен с помощью директивы using
, и тогда вам не придется полностью квалифицировать имена классов по всему коду, например что из следующего более читабельно?
Vehicles.Cars.Wheel wheel = new Vehicles.Cars.Wheel();
или
CarWheel wheel = new CarWheel();
Очевидно, что оба делают, но второй значительно короче.
Обратите внимание, что если вы включите специализацию в имя, то вы можете обнаружить, что вам не нужны все вложенные пространства имен (.Cars
, .Trucks
и т. Д.), Которые могут стать болезненными, если они обычно используются вместе, и поэтому каждый файл, использующий их, должен будет импортировать все пространства имен, например
using Vehicles;
using Vehicles.Cars;
using Vehicles.Trucks;
using Vehicles.SomethingElse;
using Vehicles.YetAnotherThing;
Если вы обнаружите, что этот же стек директив using
находится вверху каждого файла, тогда сверните классы в единое пространство имен. Обычно вы включаете все связанные функциональные возможности, которые, как ожидается, будут использоваться вместе в одном пространстве имен, и используете только вложенные функциональные возможности, которые расширяют базовое пространство имен, но используются реже.