Что-то, что сделано с репозиториями Мерзавца, должно использовать эти tag
объект. Это может использоваться для меток фиксации с любым видом строки и может использоваться для маркировки версий. Вы видите, что теги в репозитории с эти git tag
команда, которая возвращает все теги.
легко проверить тег. Например, если существует тег v1.1
, можно проверить тот тег к ответвлению как это:
git checkout -b v1.1
, Поскольку это - объект верхнего уровня, Вы будете видеть целую историю к той фиксации, а также мочь выполнить diffs, внести изменения и слияния.
Не только, что, но и тег сохраняется, даже если ответвление, что оно шло, было удалено, не будучи объединенным назад в основную строку.
Вот хороший набор рекомендаций о том, когда использовать свойства и методы из Билла Вагнера (исправлено link)
Повторные вызовы установщика (с тем же значением) не должны давать никаких отличий от одиночного вызова.
Получение не должно возвращать ссылку на внутренние структуры данных (см. Пункт 23). Метод может вернуть полную копию и может избежать этой проблемы.
Для такого свойства
private string _name;
public string Name { get { return _name; } set { _name = value; } }
можно написать следующие два метода:
public string get_Name() { return _name; }
public void set_Name(string value) { _name = value; }
, которые действуют одинаково. Фактически, это именно то, что компилятор делает для вас, когда вы создаете свойство.
Вообще говоря, я избегаю свойств, когда код внутри них начинает казаться «дорогим», если это имеет смысл. Я хочу, чтобы свойства воспринимались как поля (с контролируемыми побочными эффектами, которые происходят в определенное время), поэтому они должны быть легкими.
Свойство - это не что иное, как синтаксический сахар. В некоторых случаях лучше определить свойство, а не метод, потому что он более ясен / читабелен.
В рекомендациях по дизайну указано, что, когда реализуемая вами функциональность является дорогостоящей, метод должен быть предпочтительнее свойства.
Фактически, свойство реализовано как один или два метода; в зависимости от того, есть ли у вашего свойства сеттер или нет. Свойство транслируется в методы get_xxx и set_xxx.
Всякий раз, когда я сталкивался с необходимостью поместить код в геттер / сеттер, я помещал код в частный метод и вызываю этот метод из получателя / сеттера. Таким образом, код доступен в вызове метода, если он мне понадобится где-то еще. Не уверен, что это тот ответ, который вы искали, но это просто метод, который я использую.
Если подумать, свойства - это больше, чем просто синтаксический сахар. Они являются публичным лицом данных вашего члена для вашего кода члена.
Таким образом, предоставляя вам чистый слой для извлечения или ввода одного аспекта ваших данных члена из вашего кода.
DTO, например, не что иное, как куча хорошо написанных свойств, эффективно разделяющих данные и поведение. Вы бы вообразили, что без DTO тесно связывает свой DataGrid или Dropdown со сложным методом бизнес-логики?
Проще говоря, методы действительно выполняют работу ... Свойства либо побуждают к действию, либо получают статус.
Хотя вы можете используйте код метода внутри своих свойств ... это не то, для чего они предназначены. Даже если вам нужно, вам лучше сделать чистый вызов другого метода внутри свойства, а не писать в нем свой код. HTH!
По сути, свойство - это пара методов - getProperty и setProperty. Это всего лишь условность / упрощение.
Предполагается, что средство получения свойств не имеет побочных эффектов (ну, они могут иметь определенные побочные эффекты, такие как ленивая загрузка).
Это, вероятно, не самое важное различие, но одно из отличий заключается в том, что отладчик может быть настроен на переход свойств (при условии, что их код тривиален).
По сути, нет никакой разницы (кроме зарезервированного идентификатора "value" в установщике).
Геттеры и сеттеры внутренне транслируются в стандартные методы, так что среда выполнения не знает, связан ли какой-либо геттер или сеттер с определенным свойством. Термин «синтаксический сахар» часто используется для таких удобных конструкций.
Однако есть важное преимущество программной инженерии: ваш код будет легче понять, если вы ограничите себя использованием геттеров и сеттеров с семантикой get и set. Т.е. выполните только шаги, необходимые для предоставления соответствующего свойства.
Обычным вариантом использования для выполнения небольшой дополнительной работы является, например, установка или получение свойства, которое напрямую не поддерживается полем члена. Например, вы У нас есть класс, содержащий, скажем, значение, представляющее расстояние. Ваш класс может предоставить два свойства: километры и мили с соответствующими установщиками и получателями. Затем вы бы сделали простые преобразования в одной паре и сэкономили бы, чтобы сохранить значение дважды.
Как правило, вы не должны помещать в геттер код, имеющий побочные эффекты. Кроме того, единственный побочный эффект, который должен иметь код в установщике, - это изменение состояния объекта, на который ссылается установщик.