Я не программист Lisp, но я думаю , это поможет.
В основном это - стиль программирования таким образом, что рекурсивный вызов является последней вещью, которую Вы делаете.
Утилиты
. Прочтите эту запись в блоге Криса Миссала , чтобы узнать, почему.
Думаю, этот вопрос следует рассматривать в более широкой картине выбора правильного имени для любого носителя. Когда моя жена просит меня достать это что-то из туалета, откуда мне знать, что она имеет в виду?
Может быть, объекты моего класса создают кнопки, так почему бы не назвать это ButtonFactory? Возможно, этот объект действительно управляет временем жизни временных файлов, поэтому назовем его TemporaryFileManager.
Проблема возникает, когда у вас недостаточно контекстной информации. Это особенно сложно при создании повторно используемых компонентов: мой TemporaryFileManager может быть подклассом общего класса Manager, а моя ButtonFactory может быть особым случаем WidgetFactory.
Пока имя описывает, что эта вещь в своем контексте Я в порядке. И это '
Мои наименее любимые идентификаторы в целом:
1) Все, что меньше трех символов, действительно действует мне на нервы. Это действительно вредит читаемости, поскольку по крайней мере 3 символа обычно дают вам хотя бы одну гласную. Лично я стараюсь использовать как минимум 5 символов.
2) Одна моя любимая мозоль - это имена классов, заканчивающиеся на class (например, personClass или buttonClass), поскольку это как бы отнимает от того факта, что вы создаете объект , а не класс. Аналогичным образом создание экземпляров класса я считаю нормальным (например, blueButton, redLabel), так как его легче читать, но класс может сильно раздражать.
Перечисление плохих идей может занять какое-то время, просто я подумал о множестве плохих имен: Reader, Writer, Factory, Item, Timer, Reciever, Sender и т. Д. и т. д.
В основном, избегайте имен, которые не дают вам контекста для того, что представляет собой класс или его роль в более широкой картине. Это не обязательно должно быть когда-нибудь столь же чрезмерно, как IHelpToSendXMLDataToTheServer
, но, возможно, XMLBroadcastUtil
не будет ужасным. Некоторые люди даже доходят до добавления определенного префикса, суффикса к именам классов, чтобы указать, с каким модулем он работает. Однако я бы сказал, что это часть роли пространства имен / пакета.
Аннотация Шаблон Модель Завод Object
Все они действительно общие, и некоторые из них могут быть очевидны из определения класса. Другие, очевидно, лучше отмечены в небольшом фрагменте документации (простая ссылка на которую является одной из причин, чтобы полюбить resharper)
Все, что может переопределить стандартные классы (например: Comparator
, Iterable
и т. Д. В Java), если вы не понимаете и не намерены вызывать такого рода поведения.
Любое имя, содержащее символы, отличные от 7-битного ascii.
Я действительно не могу понять или даже редактировать символы хинди.
class हिन्दी:হিন্দী ঠার
{
// argh..
}
Артикли ( The
, A
, An
)
Местоимения и имена ( My
, Их
, Джон
)
Номера, за исключением версий спецификации ( 2
, 3
, 5000
)
Пушистые прилагательные ( Быстро
, Смарт
, Хорошо
, Лучше
)
Иностранный язык, который большинство команды не понимает (Ελληνικά)
Все, что предлагается в Как написать неподдерживаемый код .