Какое имя лучше для метода, который возвращает логическое значение?
IsSupportContentType
или же
CanSupportContentType
naming
naming-standards
медиатор
источник
источник
IsSupportedContentType
быть грамматически правильным. (если только «тип контента поддержки» не является существительным, что маловероятно)supportsContentType
? Ниже полностью читаемый:if (abc.supportsContentType("text/html"))
. «может поддержать» подразумевает, что существуют дополнительные условия для поддержки типа контента.Ответы:
Есть против Can
В соответствии с рекомендациями Microsoft по соглашению об именах , «Is» и «Can» в порядке (как и «Has») в качестве префикса для логического значения.
На простом английском языке «Is» будет использоваться для идентификации чего-либо о самом типе, а не о том, что он может делать. Например,
IsFixed
,IsDerivedFrom
,IsNullable
все это можно найти в типах CLR и методах. Во всех этих случаях «Is» сопровождается прилагательным .В то же время, «может» более четко указывает на возможность, например
CanEdit
,CanRead
,CanSeek
. В каждом из этих случаев за глаголом следует глагол .Поскольку «Поддержка» - это глагол, я думаю, что в вашем случае
CanSupportContentType
это лучше.Более короткая альтернатива
С другой стороны, соглашения говорят, что префикс является необязательным. Более того, довольно просто включить тип аргумента в имя метода, поскольку разработчик может увидеть тип аргумента в intellisense. Таким образом, вы можете просто назвать свой метод
Supports
и определить его так:... который короче и все же четко сообщает цель. Вы бы назвали это так:
Или как компромисс, может быть, это лучше:
источник
if ( someClass.Supports(contentType) )
hasSupportedContentType
std::vector::empty()
. Только из его названия, он очищает вектор? Или возвращается ли вектор пустым? На самом деле последнее, так как первое задание выполненоstd::vector::clear()
. Но вы должны в общем прочитать документы, чтобы быть уверенным. В качестве противоположного примера, QtQVector
легче понять в этом отношении, поскольку его метод проверки на пустоту таковQVector::isEmpty()
.Стоит отметить, что также можно использовать префикс « следует ». Согласно руководству Apple , не только слова « можно » и « следует », модальные глаголы в целом можно использовать для именования функций, которые возвращают логическое значение. Я не вижу много случаев использования « воли », но « должен » хорош для хуков, запрашивающих советы, как видно в реагирующих:
источник
WillCloseConnection
?is...
но используемshould...
в некоторых именах аргументов функции места, где логическое значение указывает, на что функция должна что-то менять . Если функция может дополнительно закрыть документ, вызвав параметр , управляющий , которыйisClosed
будет точной (это не закрыто еще ) , и поэтому мы будем использовать ,shouldClose
чтобы указать , что это то , что функция должна делать. (Произвольный пример; у нас вряд ли будет такая функция, особенно потому, что закрытие документа должно быть достаточно весомым, чтобы иметь выделенный вызов.)will...
зарезервировано для асинхронных функций, которые возвращают обещание; если функция, описанная в моем предыдущем комментарии, является синхронной, использованиеwill...
будет несовместимо с нашими именами.