Соглашения C # / лучшие практики - PullRequest
1 голос
/ 20 января 2010

Мне было интересно, что постоянное повторное использование имен пространств имен допустимо для c # соглашений / передовых практик.

Я разрабатываю большинство своих программ на Java, и у меня будет пакет для реализаций, например:

com.ajravindiran.jolt.game.items.sql
com.ajravindiran.jolt.game.users.sql
com.ajravindiran.jolt.events.impl
com.ajravindiran.jolt.tasks.impl

Давайте поговорим о com.ajravindiran.jolt.game.items.sql, который наиболее близок моей ситуации.В настоящее время я написал библиотеку, которая оборачивает MySQL Connection / Net в OODBMS.

Итак, у меня есть интерфейс с именем ISqlDataObject, который имеет следующие члены:

bool Insert(SqlDatabaseClient client);
bool Delete(SqlDatabaseClient client);
bool Update(SqlDatabaseClient client);
bool Load(SqlDatabaseClient client);

и используется так:

public class SqlItem : Item, ISqlDataObject
{
    public bool Load(SqlDatabaseClient client)
    {
        client.AddParameter("id", this.Id);
        DataRow row = client.ReadDataRow("SELECT * FROM character_items WHERE item_uid = @id;");
        this.Examine = (string)row["examine_quote"];
        ...
    }

    ...
}

называется:

SqlItem item = new SqlItem(int itemid);
GameEngine.Database.Load(item);

Console.WriteLine(item.Examine);

Так что мне было интересно, можно ли добавлять выпуски sql элементов в что-то вроде JoltEnvironment.Game.Items.Sql или я должен просто оставить его на JoltEnvironment.Game.Items?

Спасибо в adnvanced, AJ Ravindiran.

Ответы [ 3 ]

3 голосов
/ 20 января 2010

Соглашения и правила именования см. Руководство MSDN по именам пространств имен .

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

Так что мне было интересно, можно ли добавлять выпуски sql элементов в что-то вроде JoltEnvironment.Game.Items.Sql или мне просто оставить его в JoltEnvironment.Game.Items?

Это нормально, и наиболее подходящий вариант немного зависит от ваших конкретных потребностей.

Если игровые элементы будут использоваться повсеместно в течение всей игры, но доступ к данным будет использоваться только небольшой частью, я, вероятно, разделил бы ее на свое собственное пространство имен (хотя, вероятно, не называется Sql - я, вероятно, использовал бы Data или DataAccess, так как вы можете в конечном итоге добавить туда также информацию, не относящуюся к SQL).

Однако, если вы всегда будете использовать эти классы вместе с классами в пространстве имен Items, я бы, вероятно, оставил их в одном пространстве имен.

1 голос
/ 20 января 2010

Что вы называете выпусками SQL?Версии SQL Server?Или версия соединений с базой данных?Если позже, я бы сделал что-то вроде:

JoltEnvironment.Game.Items.DataAccess.SQLServer
JoltEnvironment.Game.Items.DataAccess.MySQL 
JoltEnvironment.Game.Items.DataAccess.Oracle

и т.д.провайдер, так что все в том же пространстве имен будет в порядке.

1 голос
/ 20 января 2010

Вы спрашиваете об соглашениях об именах, и ответ таков, что это действительно ваше дело.

Я допускаю дополнительные уровни иерархии в пространстве имен, если будет несколько реализаций. В вашем случае .Sql подходит, если есть какой-то другой механизм хранения, который не использует Sql для запросов. Может быть, это XML / Xpath. Но если у вас этого нет, то кажется, что слой именования .Sql не нужен.

Однако в этот момент мне интересно, почему вы использовали бы {игры, пользователи} на предыдущем уровне. Чувствуется, что пространство имен более естественно

JoltEnvironment.Game.Storage

.. И полные имена типов будут

JoltEnvironment.Game.Storage.SqlItem JoltEnvironment.Game.Storage.SqlUser

и так далее.

Если пространство имен, например JoltEnvironment.Game.Items, имеет только один или два класса, кажется, что оно должно быть свернуто в пространство имен более высокого уровня.

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