Соглашение о присвоении имен C# для перечисления и соответствия свойству

Вам необходимо добавить переменную для хранения этого изображения.

Попробуйте это

$('.post').each(function(i) {
    var thisimg = $('.post-body a img', this);
    $('h3.post-title', this).insertAfter(thisimg);
});
90
задан Community 23 May 2017 в 12:02
поделиться

6 ответов

Я добавлю свой 1 евро к обсуждению, но это, вероятно, не добавляет ничего нового.

очевидное решение состоит в том, чтобы переместить Состояние из того, чтобы быть вложенным Перечислением. Большинство перечислений.NET (кроме возможно некоторых в Windows. Пространство имен форм), не вкладываются, и оно делает это раздражающим для использования для разработчика, использующего API, имея необходимость снабдить префиксом имя класса.

Одна вещь, которая не была упомянута , состоит в том, что перечисления флага согласно инструкциям MSDN должны быть pluralized существительными , который Вы, вероятно, уже знаете (Состояние является простым перечислением, таким образом, существительные в единственном числе должны использоваться).

состояние (перечисление назвало состояния) является vocative, "Состояние" является номинативным из существительного, которое англичане как большая часть нашего языка поглотили с латыни. Vocative - то, что Вы называете существительным для его условия, и номинативный предмет глагола.

Так, другими словами, когда автомобиль перемещается , это - глагол - перемещение является своим состоянием. Но автомобиль не уходит, его механизм делает. И при этом это не запускается, механизм делает (Вы, вероятно, выбрали пример здесь, таким образом, это могло бы быть не важно).

public class Car
{
  VehicleState _vehicleState= VehicleState.Stationary;

  public VehicleState VehicleState 
  {
    get { return _vehicleState; }
    set { _vehicleState = value; DoSomething(); }
  }
}

public enum VehicleState
{
    Stationary, Idle, Moving
}

состояние является таким обобщенным существительным разве, не было бы лучше описать то, что указывает, что оно относится к? Как я сделал выше

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

reader.Database = Databases.Oracle;

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

31
ответ дан Trisped 24 November 2019 в 07:07
поделиться

Определение "Прочь", "Начиная" и "Перемещая" - то, что я назвал бы "состоянием". И когда Вы подразумеваете использование "состояния" это - "Состояние". Так!

public class Car
{
  public enum State
  {
    Off,
    Starting,
    Moving
  };

  State state = State.Off;

  public State Status
  {
    get { return state ; }
    set { state= value; DoSomething(); }
  }
}

, Если бы мы берем другой пример от того, указал, где требуется использовать слово "Type" такой в этом случае:

public class DataReader
{
    public enum Type
    {
        Sql,
        Oracle,
        OleDb
    }

    public Type Type { get; set; } // <===== Won't compile =====

}

действительно необходимо ли видеть, что существует различие между перечислениями и перечислениями, правильно? Но при создании платформы или разговоре об архитектуре необходимо сфокусироваться на общих чертах, хорошо позволяет, находят их:

, Когда что-то установлено на состояние, оно определяется как "вещи" Состояние

Пример: Состояние Автомобиля находится в Состоянии выполнения, Остановленном состоянии, и так далее.

то, Чего Вы хотите достигнуть во втором примере, является несколько этим:

myDataReader.Type = DataReader.Database.OleDb

Вы могли бы думать, что это говорит против того, что я проповедовал собирающийся другие, что необходимо следовать стандарту. Но, Вы следуете стандарту! Sql-случай является конкретным случаем также, и поэтому нуждаются в несколько определенном решении.

Однако перечисление было бы допускающим повторное использование в Вашем System.Data пространство, и это - то, о чем шаблонах все.

Другой случай для взгляда на с "Типом" является "Животным", где Тип определяет Разновидности.

public class Animal
    {
        public enum Type
        {
            Mammal,
            Reptile,
            JonSkeet
        }

        public Type Species{ get; set; }

    }

Это следует за шаблоном, Вы не делаете specificly должен "знать" Объект для этого, и Вы не specifing "AnimalType" или "DataReaderType", можно снова использовать перечисления в предпочтительном пространстве имен.

34
ответ дан Filip Ekberg 24 November 2019 в 07:07
поделиться

Я думаю, что настоящая проблема здесь состоит в том, что перечислимое Состояние инкапсулируется в Вашем классе, таком, что Car.Status неоднозначно и к свойству Status и к перечислению Status

Еще лучше, поместите свое перечисление за пределами класса:

public enum Status
{
    Off,
    Starting,
    Moving
}

public class Car
{
    public Status Status
    { ... }
}

ОБНОВЛЕНИЕ

из-за комментариев ниже, я объясню свой дизайн выше.

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

public class Car
{
    public enum Status
    {...}
    ...
    public Status CarStatus { get; set;}
}

, В то время как некоторые комментаторы утверждали бы, что Состояние не имеет никакого значения вне объема класса Автомобиль, то, что Вы - общественность установки a , свойство означает, что существуют другие части программы, которая будет использование что перечисление:

public Car myCar = new Car();
myCar.CarStatus = Car.Status.Off;

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

По сути, я, вероятно, просто переименую его как:

public enum CarStatus
{...}

public class Car
{
    ...
    public CarStatus Status { get; set; }
}

Однако, если то перечисление будет использоваться в [1 114] и только в [1 114] автомобильный класс, то все хорошо с объявлением перечисления там.

9
ответ дан Jon Limjap 24 November 2019 в 07:07
поделиться

Я изменил бы имя свойства к чему-то как "CurrentStatus". Быстрый легкое :)

2
ответ дан TWith2Sugars 24 November 2019 в 07:07
поделиться

Я обычно снабжаю префиксом перечисления, например, CarStatus. Я предполагаю, что все это зависит от команды, Вы работаете с (если у них есть какие-либо правила / процессы для такой вещи), и использование объектов. Просто мои 2 цента (:

0
ответ дан Kieron 24 November 2019 в 07:07
поделиться

Я знаю, что мое предложение идет вразрез с соглашениями об именах .NET, но я лично префикс перечислений с помощью 'E' и флаги перечислений с помощью 'F' (аналогично тому, как мы префикс интерфейсов с помощью ' Я'). Я действительно не понимаю, почему это не конвенция. Перечисления / флаги - это особый случай, подобный интерфейсам, которые никогда не меняют свой тип. Он не только проясняет, что это такое, но и очень легко вводить intellisense, поскольку префикс будет фильтровать большинство других типов / переменных / и т. Д., И у вас не будет этих конфликтов имен.

И это также решило бы другую проблему, когда для примеров в WPF они используют статические классы, такие как перечисления (например, FontWeights), которые имеют предварительно определенные экземпляры типов, но вы не узнаете, если не будете искать их. Если бы они просто поставили перед ними префикс '

4
ответ дан 24 November 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: