Подтвердить что ты не робот

.Net Стандарты кодирования Используя префикс "Is" или "Has" на именах методов

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

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

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

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

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

4b9b3361

Ответ 1

В Framework Design Guidelines говорится, что вы должны "давать имена методов, которые являются глаголами или фразами", поскольку "обычно методы действуют на данные". С другой стороны, свойства должны быть названы "с использованием существительного, именной фразы или прилагательного" и "вы также можете префикс Boolean properties с Is, Can или Has, но только там, где он добавляет значение".

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

Ответ 2

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

bool IsActivePage
{
  get
  {
    // some logic
  }
}

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

Я не вижу необходимости иметь как метод, так и свойство для одного и того же.

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

Я бы, наверное, не пошел по этому пути. ИМО либо

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

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