.Net Стандарты кодирования Используя префикс "Is" или "Has" на именах методов
Желательно ли префикс "Is" или "Has" при создании метода, который возвращает логическое значение. Я чувствую, что эта практика больше подходит для определения имен свойств.
Скажем, у нас есть метод, подобный следующему, имеет некоторую логику:
bool IsActivePage()
{
// Some logic to determine if the page is active...
}
Было бы предпочтительнее переименовать метод в GetActivePageStatus, а затем создать логическое свойство IsActivePage, которое возвращает результат этого метода.
Что такое стандарт .NET? Все мнения будут оценены?
Ответы
Ответ 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) логика не очень проста, вы хотите поместить ее в метод, НО НЕ скрывать ее внутри свойства, где неаккуратный вызывающий абонент может нести ненужные служебные данные, используя его ненадлежащим образом (т.е. не кэшировать значение, если есть значительные накладные расходы при его вычислении)