Подтвердить что ты не робот

Как избежать того же имени для класса и его пространства имен, например Technology.Technology?

Я часто сталкиваюсь с конфликтами имен между пространством имен и классом внутри этого пространства имен и хотел бы знать, как лучше справляться с этим, когда кажется, что имеет смысл использовать эти имена в первую очередь, помимо добавления случайных префиксов.

Казалось бы, имеет смысл иметь пространство имен Models.Technology с десятками технологических классов (например, технологий Weapon, Agricultural, Recycling) и некоторых связанных с ним интерфейсов. Я также решил иметь класс абстрактных технологий в пространстве имен технологий, из которого все технологии получают.

Однако это заставляет меня использовать такой код:

public Technology.Technology research(Technology.Technology tech) {...}

и аналогичным образом:

public Building.Building build(int count) {...}

Кстати, я не назвал свое пространство имен "Технологии", так как я использую этот термин в другом месте в качестве обертки для списка доступных технологий...

4b9b3361

Ответ 1

Без более точных указаний на то, когда вы сталкиваетесь с этой проблемой, трудно дать вам общий совет.

Но я полагаю, что у вас есть эта проблема, когда у вас есть базовый класс в вашем пространстве имен, а другие классы наследуются от него. Если это случай, вы можете назвать свой класс BaseTechnology (базовый класс) или AbstractBuilding (абстрактный класс) или IAnimal (интерфейс). Это даже дает вам больше ясности, поскольку вы указываете в названии своего типа что-то важное.

Ответ 2

Хорошо, будет ли ваше имя вашим пространством имен таким, как ns MyNamespace, или вы называете класс c MyClasse. Я лично за то, что назвал пространство имен, потому что это не то, что вы много используете в коде.

Вы также можете использовать технологию BaseBase или AbstractTechnology для наименования вашего основного абстрактного класса, который конфликтует с именем вашего пространства имен, и это то, что я рекомендую придерживаться наиболее логичного соглашения об именах.

Ответ 3

Один общий отказ - это имя вашего пространства имен "Сущности" или что-то в этом роде.

Ответ 4

Другой справится, просто позвоните в пространство имен после названия компании, в которой вы работаете.

Ответ 5

Как насчет технологии .Tech

или

HumanBeing.Human

или

CocaCola.Coke?

Мне нравится делать это простое правило. Где я использую первые две буквы слова, за которыми следуют последние две буквы этого слова:

Technology.Tegy

Это может не иметь никакого смысла, но поскольку одно и то же правило всегда применяется, это означает меньшую путаницу, и нет необходимости много помнить, кроме одного правила. Это только мое предпочтение. Я сам, как вещи, выгляжу загадочно, поэтому, если это не ваш стиль, то, возможно, этот ответ не для вас.

Надеюсь, это поможет... По крайней мере немного...:)