Префикс "находится" в имени метода для методов проверки

Если Вы ленивы, один простой способ состоит в том, чтобы расшириться generic-mode для знания о новом языке:

http://emacswiki.org/emacs/GenericMode

я делаю это много для файлов конфигурации для приложений, что я работаю со много для получения достойной подсветки синтаксиса. Вот один , я сделал для PBX звездочки давным-давно как пример.

6
задан Blake Blackwell 17 November 2009 в 17:50
поделиться

10 ответов

Я согласен с Мэтью Джонсом, что предпочтительнее называть метод IsDataCopied . Я хотел бы добавить, однако, что при именовании элементов кода, связанных с другими элементами кода, я обычно считаю, что лучше помещать Is внутри имени, а не впереди, потому что в Intellisense он будет ближе к элемент, с которым он связан (и поэтому его легче найти). Например, в Winforms форма имеет свойство Handle и IsHandleCreated . Если IsHandleCreated был назван HandleIsCreated ,

5
ответ дан 8 December 2019 в 13:00
поделиться

Я согласен с вами. Для меня IsDataCopied гораздо более читабельна.

В более общем плане, VerifyCopyData для меня неоднозначно относительно того, является ли это строго методом проверки или действительно ли он что-то делает. IsDataCopied очень ясно показывает, что он только проверяет, скопированы ли данные.

8
ответ дан 8 December 2019 в 13:00
поделиться

Это определенно субъективно, и в разное время (работая с разными библиотеками и даже с разными языками) я всегда использовал такие префиксы и никогда их не использовал - смешивая это соглашение с тем, чтобы его не использовать. часто было бы ошибкой. Решите, что наиболее понятно, исходя из контекста, включая то, что уже делается в этом проекте / библиотеке / и т. Д.

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

Кроме того, я ожидаю, что любой метод с именем Verify выполнит некоторые действия » настоящая "работа для проверки, в то время как Is должен либо возвращать предварительно вычисленное / уже доступное значение, либо вычислять его тривиально. В языках, где у вас есть свойства, это намного проще выразить, поскольку вы можете отделить вещи, которые являются «действиями», от тех, которые не являются таковыми. Например, при использовании if (obj.data_copied) инкапсулируется, независимо от того, является ли это элементом данных или тривиальной функцией, такой как IsDataCopied.

1
ответ дан 8 December 2019 в 13:00
поделиться

IsDataCopied менее читаема, так как назначение метода неизвестно. Если он просто возвращает логическое значение и больше ничего не делает, то все в порядке. Но если он выполняет проверку, то за невинно выглядящим условным оператором может быть спрятано много кода.

Мой совет:

bool isDataProperlyCopied = VerifyCopiedData();
if ( isDataProperlyCopied ) {
   ...
}
1
ответ дан 8 December 2019 в 13:00
поделиться

Хорошо, если ваши методы могут содержать глагол, который помогает описать, что делает метод. VerifyCopyData звучит так, как будто проверяет данные, тогда как isDataCopied звучит так, как будто проверяет наличие некоторого факта. Это тонкое различие. Нитпик: Я

0
ответ дан 8 December 2019 в 13:00
поделиться

«Должен» - это широкий термин. Делайте то, что для вас имеет смысл. Во многих случаях использование «Есть» проясняет, но не всегда.

Опять же, делайте то, что имеет смысл.

0
ответ дан 8 December 2019 в 13:00
поделиться

, если бы это было другое имя, я бы подумал, но VerifyCopyData определенно менее читабелен, чем isDataCopied .

0
ответ дан 8 December 2019 в 13:00
поделиться

Согласен. Наличие префикса «Is» делает более понятным, что это логическая функция. На самом деле во многих соглашениях об именах стандартным является префикс не только методов, но и свойств и переменных.

Префикс Verify не так ясен, поскольку он вполне может быть пустой функцией или подпрограммой, которая ничего не возвращает. Например, Verify может означать, что он проверяет несколько вещей и выдает исключение, если что-то не так. Если префикс Is означает, что вы задаете вопрос, и вам будет возвращен ответ.

0
ответ дан 8 December 2019 в 13:00
поделиться

Я считаю "Is" более ясным. Функция с именем «VerifyCopyData ()» может вызвать исключение, если данные не были скопированы, или иметь побочные эффекты. Наверное, нет, но если бы я прочитал это, я бы не знал, чего от него ожидать. Функция с префиксом Is ясна: эта функция не будет иметь побочных эффектов и просто вернет логический ответ на вопрос.

Наличие глагола действия (проверить) подразумевает для меня, что функция действительно что-то делает. Использование «Is» не имеет глагола действия, поэтому оно подразумевает, что функция просто проверяет состояние и больше ничего не делает.

2
ответ дан 8 December 2019 в 13:00
поделиться

Я предпочитаю Is , когда дело доходит до переменных и свойств

if(o.IsDataCopied)
{
}

Но в этом случае при вызове метода я бы выбрал что-то вроде

if(DataIsCopied())
{
}
0
ответ дан 8 December 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: