среда, 6 апреля 2011 г.

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

Введение

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

"И началось действие...."



Конечно, за свой небольшой срок программирования я повидал некое, весьма ограниченное количество программ, написанных программистами разного уровня (в основном новичками). Да, безусловно, код был интересный, подход к некоторым задачам чуть более чем не тривиальный, методы реализации вызывали также повышенный интерес. Все бы ничего, пока дело не дошло до разбирания кода и полного вникания в него. Тут то и начинаются "дебри", способные вызвать ужас и страх даже у людей, видавших виды

int a,b,c,a1,d2,cop34,tmpcnt1,tmpcnt2;

a = arg1->getNumber();

switch(c)
{
case 2:
// somthing done

a1 = a;
break;

}

// and more coding horror

    Естественно, пока вы в трезвом уме и пишите свою программу первые часа 3-4, вы абсолютно в состоянии разбирать и хранить в своей памяти,за что отвечают каждые из вышеперечисленных перемен это "кодинг хоррора" (прим. "Codding Horror" - блок нежелательной реализаций той или иной тематики в "библии" программистов "Совершенный Код" Стива МакКоннела http://www.cc2e.com/  ), но спустя 3-4 часа (а если вы программировали, закончили и приступили на следующий день - то в течении суток) смысловое значение той или иной переменной, носящей весьма призрачное смысловое название "a1", просто напросто забывается и помнить,за что она отвечает, просто невозможно. А таких переменных в программе начинающего кодера может быть просто ошеломляющее количество. И после нескольких часов работы, при начале отладки программы, когда, естественно, ничего не работает, юное дарование (простите за столь дерзкий сарказм) начинает винить Вирта, Страуструпа, Билла Гейтса, Windows, весь Белый Свет и соседа, сверлящего стену в том,что этот "гребанный кусок программного кода не компилируется как надо"(С)  или "Да этот компилятор просто не понимает мою логику!".

    После нескольких десятков подобных комментариев в окно летят учебники, в корзину летят программы и так далее... А ведь как бы было хорошо - при прочтении имени переменной подсознательно понимать,за что она относится. Скажу вам более - если соблюдать стиль, то чужим людям, которые будут возможно читать ваш код, сразу станет ясно,что вы делаете. Ведь порой достаточно прочитать 3 строчки и комментарий, чтобы понять,что делает алгоритм. Приступим!


Как организовать?

Конечно, данный цикл статей не претендует даже близко на полное изложение темы, так как эта проблема решается сама по себе спустя некоторое количество практических занятий. Я лишь изложу основы.

Как назвать пространства имен? (namespace)

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

namespace PhysX


Как назвать класс ? (class)

С названиями класса дело обстоит почти также, как и с пространствами имен. За название класса надо брать некое обобщение того функционала, который он непосредственно внутри себя реализует. Также для удобства рекомендуется приписывать слово Class после имени и имена давать в соответствии с camel casing http://ru.wikipedia.org/wiki/CamelCase
Например, код

SomeClass someting;

выглядит на порядок "круче", чем некая подобная запись

Foo foo;

Из первой части примера наглядно видно, что объявляется экземпляр класса SomeClass;
Второй же пример тоже наглядно показывает об объявлении экземпляра класса, но первый выглядит более удобочитаемым и интуитивно понятным.

Поэтому читая имена классов такие,как

DeathStarClass, HamburgerClass, CountryClass, LandUnitClass

сразу становится ясно и понятно то, какой функционал они в себе несут :)

На этот раз пока все. В следующий статье мы рассмотрим правила написания имен полей,методов,структур, перечислений.

Некая база

Вообще следует принять за стандарты некие стили описания объектов в вашем коде,в перечислю их внизу под двумя заголовками: рекомендуется camelCase и pascalCase

CamelCase
  • Пространства имен
  • Классы
  • Интерфейсы (INumerable)
  • Методы
PascalCase
  • поля
  • все экземпляры классов (читай: поля)
  • экземпляры структур
  • экземпляры перечислений (enum)
  • имена всех экземпляров системных переменных
Конкретно сами способы именования мы рассмотрим в следующей статье. Удачи!

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

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