Что такое хорошее соглашение об именах для процедуры, которая устанавливает глобальную переменную в том же классе - PullRequest
2 голосов
/ 22 апреля 2009

Code Complete (Глава 7, Раздел 3) говорит, что для возвращаемого значения должна быть названа хорошая функция, а для того, что она делает, должно быть названо хорошее имя процедуры в классе.

Когда я пишу синхронизированные методы в Delphi (до 2009 г.), мне иногда нужно использовать их для установки глобальных переменных, что, казалось бы, плохая практика программирования, но однажды необходимо, поскольку я не могу передавать переменные. Я не хочу называть их «Get» или «Set», потому что я использую их для своих методов свойств.

У кого-нибудь есть лучшее соглашение об именах для них?

Ответы [ 6 ]

3 голосов
/ 22 апреля 2009

Я не хочу называть их "Получить" или «Установить», потому что я использую их для моего методы свойств.

Это кажется довольно произвольным решением. Можете ли вы также сказать, что вы не хотите использовать «set» для «setName», потому что вы также использовали его для «setAge»?

При этом статика с сеттером - это буквально публичная глобальная переменная ALA Basic-- Вы уверены, что это единственный способ выполнить вашу миссию?

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

1 голос
/ 22 апреля 2009

Получатели и установщики свойств не имеют имен, начинающихся с get и set , потому что это определенное соглашение, зарезервированное для именования получателей и установщиков. У них есть эти имена, потому что это то, что они делают . Поскольку целью вашего синхронизированного метода является установка значения переменной, имеет смысл дать ему имя «set».

Вы можете выбрать синоним глагола, например назначить или copy , просто чтобы отличаться от set , но это нетрадиционные имена для вашей я описал. Если у вас есть подпрограмма, которая устанавливает значение Foo, соглашение требует, чтобы функция называлась SetFoo. В конечном счете, я думаю, что вам просто нужно преодолеть любые проблемы, связанные с использованием get и set для вещей, которые не являются средствами доступа к свойствам.

1 голос
/ 22 апреля 2009

Какую версию Delphi вы используете? При использовании D2006 или 2007 вы можете переместить глобальные переменные в свойства класса с помощью методов класса, чтобы получить и установить значения. Поскольку это методы получения и установки свойств, целесообразно использовать Get и Set.

type
 TMyObject = class(TObject)
 private
    class var
      FStringProperty : string;

    class function GetStringProperty: String; static;
    class procedure SetStringProperty(const Value : string);static;
  public
    class property StringProperty : String read GetStringProperty write SetStringProperty;
  end;
1 голос
/ 22 апреля 2009

Я бы сказал, что совет от Code Complete довольно сильный, а ваше возражение "потому что я использую их для своих методов собственности" довольно слабое. Эти установщики / получатели свойств должны быть частными в любом случае. Считайте это формой перегрузки и назовите их SetFoo и GetFoo.

0 голосов
/ 27 ноября 2013

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

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

0 голосов
/ 27 ноября 2013

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

SetGlobalFoo(...);

для этой цели. Затраты на длинное имя - ОК, IMO, потому что эти конструкции следует использовать редко.

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