Стандарты кодирования .Net Использование префикса «Есть» или «Имеет» в именах методов - PullRequest
26 голосов
/ 06 июля 2011

Желательно ли создавать префикс " Is " или " Has " при создании метода, возвращающего логическое значение.Мне кажется, что эта практика больше подходит для определения имен свойств.

Скажем, у нас есть метод, подобный следующему, имеет некоторую логику:

bool IsActivePage()  
{  
 // Some logic to determine if the page is active...   
}

Было бы более предпочтительно переименовать метод в GetActivePageStatus и затем создать логическое значениесвойство IsActivePage , которое возвращает результат этого метода.

Что такое стандарт .NET?Все мнения будут оценены?

Ответы [ 7 ]

32 голосов
/ 06 июля 2011

Руководство по разработке инфраструктуры гласит, что вы должны "давать имена методов, которые являются глаголами или глагольными фразами", поскольку "обычно методы действуют на данные". Свойства , с другой стороны, должны называться «с использованием существительного, именной фразы или прилагательного» и «вы также можете добавлять префикс булевых свойств к Is, Can или Has, но только там, где это добавляет значениеMsgstr ".

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

7 голосов
/ 06 июля 2011

Я бы использовал

bool IsActivePage
{
  get
  {
    // some logic
  }
}

, если метод не имеет побочных эффектов и недорог.

Я не вижу необходимости иметь метод и свойство для одной и той же вещи.

3 голосов
/ 06 июля 2011

Я голосую за ваше решение: так что ДА, для методов, я лично думаю, лучше иметь Get..Bla (), вызывать метод, интуитивно, по крайней мере для меня, - это не только то, что возвращает мне значение, но также выполняет некоторые вычисления или вызывает другие методы внутри него, вместо этого свойства просто возвращают значение.

Слово "Получить", лично мне, кажется, DO SOMETHIGN + RETURN,

вместо "Is": проверьте, существует ли оно.

2 голосов
/ 06 июля 2011

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

1 голос
/ 06 июля 2011

Было бы более предпочтительно переименовать метод в GetActivePageStatus, а затем создать логическое свойство IsActivePage, которое возвращает результат этого метода.

Я бы, вероятно, не пошел по этому пути.IMO либо

a) логика очень проста, и вы можете просто поместить ее в свойство getter

b) логика не очень проста, вы хотите поместить ее в метод НОНЕ скрывать его в свойстве, где непредвиденный вызывающий объект может понести ненужные накладные расходы, используя его ненадлежащим образом (т.е. не кэшируя значение, если при его вычислении имеются значительные накладные расходы)

1 голос
/ 06 июля 2011

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

При этом существуетВ Интернете имеется ряд стандартов кодирования .Net (Google по-прежнему остается вашим другом), и вам следует придерживаться этих документов как можно лучше.Единственное исключение - в смешанной языковой среде, где разные языки имеют разные соглашения по стилю, и вы хотите создать более общий стиль, который охватывает все эти языки.В этом случае вам следует создать документ стиля и опубликовать его.

1 голос
/ 06 июля 2011

Я бы сказал, да. Все методы должны начинаться с глагола action , чтобы указать, что они делают что-то. Is и Имеет больше подходят для свойств.

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