четверг, 7 апреля 2011 г.

Имена в программировании. Часть 3.

Вступление к третьей части

Вот мы и наконец-то подошли вплотную к последней части из цикла статей, посвященных правильному именованию объектов в программах. В предыдущих двух выпусках мы рассмотрели именование классов, пространств имен, полей различных типов и назначений. В процессе рассмотрения удалось провести некоторые аналогии, который позволили вывести нам четкую формулу, которой можно следовать, давая имена объектам:

Имя_Объекта( Характеристика_Объекта) + Свойство(Объекта/Характеристики)


или наоборот.

Данная формула универсальна, в чем мы могли убедится в предыдущих частях. Что же, необходимо двигаться дальше. В этой части статьи (заключительной части) мы рассмотрим именование методов, структур и энумераций. Но обзор методов мы также немного расширим - я рассмотрю способ именования аргументов при создании метода. Ну вот - границы работы определены, давайте теперь перейдем вплотную к делу)

Планы на будущее

Пока я еще не решил, чему будут посвящены мои следующие статьи, но скорее всего, мы уйдем от общей концепции программирования и будем рассматривать более узкие темы, тесно связанные с написание 2d игры. Планируется рассмотрение базовых навыков, необходимых для написания игры, а также некоторые способы реализации определенных моментов и трудностей, возникающих в процессе программирования. Но это все пока что планы, давайте вернемся к нашим методам =)

Как назвать метод? (method)

Методы - важная структурная единица любого класса, фактически метода-это набор инструкций по взаимодействию со всеми объектами вашего класса. Если рассматривать количество полей и методов в классе, то методы по своей численности не особо уступают полям. Поэтому именование их - тоже важная задача. Рассмотрим некую концепцию методов, как таковых.

Методы обычно выполняют несколько функций
  • Получают значение
  • Устанавливают значение
  • Высчитывают что-либо
  • Выполняют некие вычисление, преобразования и т.п.
В соответствие с этим есть методика именования (интересно, что до всех рассмотренных концепций именования я дошел сам, а после изучения МакКоннела приятно удивился,что мои концепции, разработанные эмпирическим путем, почти полностью совпадают с методами Стива), которую я и предлагаю рассмотреть.

При получении значения удобнее всего выбирать такой шаблон

Get_Объект

Пример:

GetValue(), GetDescription(), GetRigidBody(), GetPrincessLea()

При установки значения соответственно выбираем следующий шаблон

Set_Объект

Пример:

SetValue(...), SetActiveDeathStar(...), SetMainPoint(....)

Обратите внимание! Точки в скобках означают, что передается некий списко аргументов в метод и что метод скорее всего типа void или bool (чтобы проверять, выполнился ли метод,т.е. метод возвращает true, если все операции в нем выполнены или false, если что-то там не выполнилось (реализация возвращения true или false реализуется самим программистом) )

Если наш метод что-либо высчитывает, то имя надо выбирать по ситуации. Конкретного шаблона нет, но есть рекомендации:
  • название операции ставьте вначало
  • затем указывается имя первого аргумента
  • затем идет предлог
  • затем имя второго аргумента
Не забывайте, что все это именуется в camel case.  Рассмотрим примеры:

AddOneRebelToAnother(...), GlueBrokenDetails(....), DivideArmyOnSquads(.....)

Они вполне наглядные и показывают, как можно выполнить вышеперечисленные рекомендации.

Если метод что либо строит, вычисляет, переопределяет и т.п., то применяется вышеописанные шаблон с некоторыми изменениями
  • Что именно выполняет метод
  • Над какими объектами совершается действие
Рассмотрим примеры - они тоже весьма наглядные:

BuildMatrix(....), CalculateTotalDistance(.....)

Опять же, хочу напомнить,что моя статься не претендует на полное изложение материала, она поможет вам разобраться с базовыми способами и(надеюсь) поможет сформировать некую модель мышления по правильному именованию объектов.

И еще немного. Я обещал немного рассмотреть именование аргументов методов. там все просто - перед именем аргумента в pascal case ставим символ нижнего подчеркивания "_", что никогда не даст нам спутать имя аргумента с именем переменной

GetJediMight(int _jediMight,JedaiClass _jedyToGet)

в принципе,тут тоже все предельно ясно - символ нижнего подчеркивания помогает четко разграничить аргументы и имена полей.

С методами все. Самые основные вещи я рассмотрел, перейдем к заключительной (легкой части) именования структур и энумераций.


Как назвать структуру и энумерацию? (structure, enumaration)

Тут рецепт предельно прост. после смыслового имени приписываем сокращения типа Struct или Enum соответственно, дабы уметь грамотно отличать экземпляр от ключевого слова, объявляющего структуру.

Пример

struct LightSaberStruct
{
    \\ поля структуры
}

enum LightSaberColorsEnum
{
    \\ перечисления
}


Послесловие

На этом замечательном добром слове оканчивается цикл статей, посвященных именам в программировании. Дальнейшие статьи, как уже было сказано ранее, будут посвящены более узким темам касательно реализации неких ключевых моментов в играх, программах. Статьи будут писаться по мере возникновения такой необходимости, то есть тогда, когда я узнаю нечто такое,что может принести пользу начинающим программистам.

До скорой встречи!

Комментариев нет:

Отправить комментарий