Как правильно назвать классы внутри пространства имен домена? - PullRequest
1 голос
/ 02 мая 2010

Допустим, я пытаюсь реализовать игру в шахматы.

Я бы создал свои шахматные классы в пространстве имен Chess. Теперь я должен поставить перед всеми моими классами, связанными с шахматами, слово «Шахматы» или, поскольку они уже находятся внутри этого пространства имен, я должен просто назвать их такими, какие они есть?

Пример:

ChessGame vs Game
ChessPiece vs Piece

Ответы [ 3 ]

4 голосов
/ 02 мая 2010

Добавление префикса, соответствующего пространству имен, является пустой тратой времени и не дает никакой реальной выгоды. Просто перейдите с Game, Piece и т. Д.

1 голос
/ 02 мая 2010

Предположим, у вас был язык без каких-либо пространств имен или пакетов (в некоторых языках, таких как Java, пакет является программным модулем и пространством имен одновременно ...). Чтобы избежать конфликта имен, вы должны использовать префиксы. Но вы должны позаботиться о том, чтобы правильно назвать все элементы программы и писать некоторые символы каждый раз, когда вы вводите что-то новое. Таким образом, решение будет заключаться в том, чтобы ввести пространство имен в язык, конструкция, которая будет автоматически добавлять каждый элемент к какому-либо имени, которое вы можете указать в одном месте (избегая опечаток). Теперь, пока имена пространств имен не классифицируются, вы в безопасности. Пространства имен позволяют указывать префикс в одном месте, так что вы можете легко использовать более длинные имена и, следовательно, избежать конфликта, не вводя больше каждый раз. Посмотрите, например, как названы пакеты некоторых библиотек - они используют пространство имен uri (например, country_abbreviation.compay_name.product_name.program_module). Однако написание полных имен идентификаторов с именем пакета, как правило, утомительно, поэтому многие языки придумали конструкции, которые позволяют использовать имена из пространства имен, как если бы вы использовали их прямо в пространстве имен (например, использование, импорт и т. Д.). Но это возвращает нас к исходной ситуации. Решение состоит в том, чтобы избежать использования неявных пространств имен для элементов программы, которые могут измениться, как в вашей ситуации. Поэтому решение, которое вы хотите, - это использовать пространства имен для разных игр, чтобы вы могли указать в компоненте GUI, какой именно элемент игры вы имеете в виду, указав полное имя с именем пакета.

1 голос
/ 02 мая 2010

В Java пространство имен доменов - это пакет.

«имя класса» - это: имя пакажа + идентификатор.

Короче говоря, идентификатор класса - это имя класса, но это человеческое соглашение. Имя класса всегда paquage + идентификатор.

Для анонимного класса в java указан идентификатор.

делает:

a.b.c.Foo foo = new a.b.c.Foo();

эквивалентно

import a.b.c.Foo;

...

Foo foo = new Foo();

Как назвать paquage / доменное пространство? С вашим именем домена :-), иногда с суффиксом «ing» (java.util.logging).

Вы также можете моделировать некоторые пространства имен домена с помощью вложенного класса (внутреннего статического класса).

...