Если Вы ленивы, один простой способ состоит в том, чтобы расшириться generic-mode
для знания о новом языке:
http://emacswiki.org/emacs/GenericMode
я делаю это много для файлов конфигурации для приложений, что я работаю со много для получения достойной подсветки синтаксиса. Вот один , я сделал для PBX звездочки давным-давно как пример.
Я согласен с Мэтью Джонсом, что предпочтительнее называть метод IsDataCopied
. Я хотел бы добавить, однако, что при именовании элементов кода, связанных с другими элементами кода, я обычно считаю, что лучше помещать Is
внутри имени, а не впереди, потому что в Intellisense он будет ближе к элемент, с которым он связан (и поэтому его легче найти). Например, в Winforms форма имеет свойство Handle
и IsHandleCreated
. Если IsHandleCreated
был назван HandleIsCreated
,
Я согласен с вами. Для меня IsDataCopied гораздо более читабельна.
В более общем плане, VerifyCopyData для меня неоднозначно относительно того, является ли это строго методом проверки или действительно ли он что-то делает. IsDataCopied очень ясно показывает, что он только проверяет, скопированы ли данные.
Это определенно субъективно, и в разное время (работая с разными библиотеками и даже с разными языками) я всегда использовал такие префиксы и никогда их не использовал - смешивая это соглашение с тем, чтобы его не использовать. часто было бы ошибкой. Решите, что наиболее понятно, исходя из контекста, включая то, что уже делается в этом проекте / библиотеке / и т. Д.
Например, obj.DataIsCopied ()
лучше подходит для носителя английского языка, но затем у вас есть ! obj.DataIsCopied ()
(или не
). Вы должны признать, что пишете код и нуждаетесь в соглашениях, и эти соглашения добавляют смысл (в описательном смысле) субъективно.
Кроме того, я ожидаю, что любой метод с именем Verify
выполнит некоторые действия » настоящая "работа для проверки, в то время как Is
должен либо возвращать предварительно вычисленное / уже доступное значение, либо вычислять его тривиально. В языках, где у вас есть свойства, это намного проще выразить, поскольку вы можете отделить вещи, которые являются «действиями», от тех, которые не являются таковыми. Например, при использовании if (obj.data_copied)
инкапсулируется, независимо от того, является ли это элементом данных или тривиальной функцией, такой как IsDataCopied.
IsDataCopied
менее читаема, так как назначение метода неизвестно. Если он просто возвращает логическое значение и больше ничего не делает, то все в порядке. Но если он выполняет проверку, то за невинно выглядящим условным оператором может быть спрятано много кода.
Мой совет:
bool isDataProperlyCopied = VerifyCopiedData();
if ( isDataProperlyCopied ) {
...
}
Хорошо, если ваши методы могут содержать глагол, который помогает описать, что делает метод. VerifyCopyData
звучит так, как будто проверяет данные, тогда как isDataCopied
звучит так, как будто проверяет наличие некоторого факта. Это тонкое различие. Нитпик: Я
«Должен» - это широкий термин. Делайте то, что для вас имеет смысл. Во многих случаях использование «Есть» проясняет, но не всегда.
Опять же, делайте то, что имеет смысл.
, если бы это было другое имя, я бы подумал, но VerifyCopyData
определенно менее читабелен, чем isDataCopied
.
Согласен. Наличие префикса «Is» делает более понятным, что это логическая функция. На самом деле во многих соглашениях об именах стандартным является префикс не только методов, но и свойств и переменных.
Префикс Verify не так ясен, поскольку он вполне может быть пустой функцией или подпрограммой, которая ничего не возвращает. Например, Verify может означать, что он проверяет несколько вещей и выдает исключение, если что-то не так. Если префикс Is означает, что вы задаете вопрос, и вам будет возвращен ответ.
Я считаю "Is" более ясным. Функция с именем «VerifyCopyData ()» может вызвать исключение, если данные не были скопированы, или иметь побочные эффекты. Наверное, нет, но если бы я прочитал это, я бы не знал, чего от него ожидать. Функция с префиксом Is ясна: эта функция не будет иметь побочных эффектов и просто вернет логический ответ на вопрос.
Наличие глагола действия (проверить) подразумевает для меня, что функция действительно что-то делает. Использование «Is» не имеет глагола действия, поэтому оно подразумевает, что функция просто проверяет состояние и больше ничего не делает.
Я предпочитаю Is
, когда дело доходит до переменных и свойств
if(o.IsDataCopied)
{
}
Но в этом случае при вызове метода я бы выбрал что-то вроде
if(DataIsCopied())
{
}