Если вы используете геттеры и сеттеры, как следует называть частные переменные-члены?

StackOverflow https://stackoverflow.com/questions/169216

  •  05-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Это совершенно субъективный вопрос. Нет «лучше» путь.

Один из способов:

private int _x;
public get x():int { return _x; }
public set x(int val):void { _x = val; }

Еще один:

private int x;
public get X():int { return x; }
public set X(int val):void { x = val; }

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

Другие советы

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

private int _x;

Я думаю, что это выходит за рамки прямых личных предпочтений (как сказал Дэвид Арно в этой теме). Я думаю, что есть некоторые реальные объективные причины для этого:

<Ол>
  • Это означает, что вам не нужно писать " this.x = x " для заданий (особенно в установщиках и конструкторах).
  • Он отличает ваши поля от ваших локальных переменных / аргументов. Это важно сделать: с полями сложнее работать, чем с местными, так как их область действия шире / время жизни больше. Добавление дополнительного символа - это немного предупреждающий знак для программистов.
  • В некоторых IDE подчеркивание заставит автозаполнение сортировать поля в верхней части списка предложений. Это облегчает просмотр всех полей для класса в одном блоке. Это в свою очередь может быть полезным; в больших классах вы не сможете увидеть поля (обычно определяемые в верхней части класса) на том же экране, что и код, над которым вы работаете. Сортировка их по началу дает удобную ссылку.
  • (Эти соглашения для Java, но аналогичные существуют для других языков)

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

    В java есть this.foo, в python есть self.foo, и в других языках есть похожие вещи, поэтому я не вижу необходимости называть что-то специальным образом, когда я уже могу использовать языковую конструкцию. В этом же контексте хорошие IDE и редакторы понимают переменные-члены и выделяют их особенным образом, так что вы действительно можете увидеть их без специальных имен.

    В чувствительном к регистру языке я просто использую:

    private int myValue;
    
    public int MyValue
    {
        get { return myValue; }
    }
    

    В противном случае я бы использовал подчеркивание

    Private _myValue As Integer
    
    Public ReadOnly Property MyValue As Integer
        Get
            Return _myValue
        End Get
    End Property
    

    Существует почти столько же разных способов сделать это, сколько программистов, но некоторые из наиболее популярных способов включают в себя (для свойства Foo):

    • мфу
    • м_фу
    • _foo
    • фу

    Мне нравится писать "this.x = x". Это очень ясно для меня. Кроме того, при использовании Eclipse вы можете автоматически генерировать ваши методы получения / установки.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top