» Главная
eXcode.ru » Статьи » Другие
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 4





20 советов по созданию настоящего Х-кода (2 часть)




Источник: gremlin.h12.ru

Если амнезия не твой конек, то ты должен помнить, что первая двадцатка советов была посвящена оптимизации кода. Вторая двадцатка советов ориентирована в основном на создание больших и сложных программ. Тебе, наверное, знакома такая ситуация, когда легче написать программу самому, чем разбираться в чужом многометровом коде, или когда ты вскрываешь код своей проги, написанный год назад, и понимаешь, что разобраться в нем практически без шансов. Так вот, это объясняется только тем, что ни ты, ни тот чувак, чей код тебя интересует, не умеете создавать понятные и самодокументируемые программы, что так важно в современном программировании. Данные советы помогут избежать подобных траблов. Придерживаясь этих советов, ты сможешь спокойно "летать" по своему коду размером в несколько десятков тысяч строк даже по прошествии многих лет. Уверен, их оценят и те, кто работает с тобой в команде. И все-таки хочу заметить, что это всего лишь советы... ни правила, ни приказы, ни табу, а ВСЕГО ЛИШЬ СОВЕТЫ, т.е. следовать им или нет, твое сугубо личное дело, но миллионы программистов по всему миру говорят однозначно: "Следовать!".

Совет №1

Давай осмысленные имена идентификаторам (переменным, функциям, процедурам, методам и т.д.). Например, как определить, что выражение y = x + z вычисляет количество чилдренов в классе? Но, если использовать именованные переменные, например: Children = ChildrenBoys + ChildrenGirls, то всем все сразу становится ясным без лишних комментариев. Таким образом, избегай в своем коде однобуквенные переменные типа x, y, z и т.п., если, конечно, не строишь график функции. Лучше потратить несколько минут на придумывание подходящего имени переменной, чем потом часами чертыхаться при отладке.

Совет №2

В именах идентификаторов используй исключительно английские слова, а не транслит, типа EtoPeremennaya, чтобы твой код могли легко читать и иностранцы. К тому же английские слова намного короче русских. Не советую также использовать аббревиатуры и сокращения, чтобы потом самому не пришлось провести утомительные часы, вспоминая: "Как же ЭТО расшифровывается?".

Совет №3

Во всем коде не должно быть двух одинаковых идентификаторов, хотя это в принципе возможно. Использование разных имен помогает избежать двусмысленности.

Совет №4

Придерживайся стандарта в именовании идентификаторов. Всего существует 3 стандартных схемы:
1. Идентификатор состоит из нескольких слов, записанных слитно, каждое из которых начинается с заглавной буквы (именно по этой схеме я именовал переменные в первом совете).
2. В качестве идентификатора записывается целая фраза, а вместо пробелов используются символы подчеркивания, например: toilet_is_clogged (на мой взгляд, самая понятная, но и самая громоздкая схема).
3. Идентификаторы записываются в так называемой "венгерской" нотации. Тут, думаю, нужно немного пояснить. Придуманная одним из руководителей Microsoft, Чарльзом Симони (венгром по национальности), благодаря всеми уважаемой и любимой фирме, "венгерская" нотация стала знаменита на весь мир. Именно ее ты можешь лицезреть в Windows API. Главное преимущество "венгерской" нотации состоит в том, что она отражает не только смысл переменной или функции, но и тип, что бывает очень удобно; например, при необходимости не нужно искать то место, где объявлялась переменная. По сути "венгерская" нотация эта система префиксов, которые добавляются к имени переменной или функции. Например, переменная целого типа Children в венгерской нотации будет записана как iChildren. Вот еще несколько префиксов: s - string, c - char, w - word, dw - dword, p - указатель и т.п. В одном идентификаторе может быть одновременно несколько префиксов, например, psMotherFucker - указатель на строковую переменную. Короче, даже если ты не собираешься использовать эту нотацию в своих прогах, я все же настоятельно советую изучить ее, хотя бы для того, чтобы легко читать чужой код с ее применением, что, имхо, непросто сделать, т.к. "венгерская" нотация напоминает бормотание индюка.
Неважно, какую из этих трех схем именования ты выберешь, главное стандарт! В принципе, никто не мешает тебе придумать и использовать свою схему записи идентификаторов, только обязательно нужно выдерживать единый стиль их написания и желательно закомментировать в начале проги инфу о том, по какому принципу ты это делаешь.

Совет №5

Не соглашайся с названиями элементов управления (компонентов), которые визуальные среды дают по умолчанию - типа Edit1, Edit2, Edit3 и т.д. Сразу же меняй их на что-нибудь более осмысленное, например, edGeneral, edSquare, edVolume. Вообще, именование элементов управления идет отдельным пунктом от трех стандартных схем именования идентификаторов. Элементы управления принято именовать с префиксом (обычно двухбуквенным или трехбуквенным), напоминающим о типе компонента или его свойстве, как это делается в "венгерской" нотации. Советую именовать таким способом компоненты, даже если ты не используешь "венгерскую" нотацию. Должен заметить, что, к сожалению, не существует единого стандарта по именованию элементов управления (по крайней мере, он мне неизвестен), каждый делает это как ему в голову взбредет, поэтому советую выбрать префиксы самостоятельно, а в начале проги отметить это в комментариях. Еще раз замечу, что именование компонентов имеет смысл в больших и сложных программах, с кучей форм и элементов управления на них, а в простых программах с одной формой имена компонентов лучше оставлять по умолчанию.

Совет №6

При объявлении или присвоении начальных значений большому количеству переменных записывай их в алфавитном порядке, например:
Dim BlueBoy As Integer
Dim CowBoy As Double
Dim DeadBoy As Currency
BlueBoy = 0
CowBoy = 1
DeadBoy = -1

Совет №7

Не скупись на пробелы! Ты должен понимать, что чем больше свободного пространства на экране, тем легче человеческому глазу различать текст. Соответственно, чтобы было легче читать код, вставляй пустые строки до и после каждого более-менее значащего блока кода. Т.е. выделяй пустыми строками процедуры, функции, структуры (инструкции) и т.д. и т.п. Ставь пробел после каждой запятой и выделяй пробелами бинарные операции, такие, как: +, -, * и т. п., если, конечно, твой редактор кода не делает это автоматически (может быть, ты пишешь свой код в "Блокноте").

Совет №8

Используй "лесенку", т.е. записывай с отступом операторы тела блоков кода. Например:

begin

...

begin

...

begin

...

end;

...

end;

...

end;

Но большая глубина вложенности может сделать программу трудной для понимания, поэтому старайся избегать более трех уровней отступов. Также настоятельно советую делать отступы клавишей TAB, а не клавишей ПРОБЕЛ.

Совет №9

Учись грамотно использовать комментарии в своем коде. К сожалению, часто бывает, что кодеры либо совсем не используют комментарии, либо закомментируют так свою прогу, что трудно становится обнаружить код. Нужно учиться находить золотую середину! Необходимо комментировать только те участки текста, которые реально могут вызвать трудности в понимании. Чаще всего комментарии необходимо вставлять перед функциями и процедурами. Также хорошим тоном считается включать комментарий в начало кода, описывающего цель программы.

Совет №10

В дополнение к предыдущему совету: при создании структур типа условий, циклов и т.п. советую сразу обозначить комментарием замыкающее слово (end), чтобы потом не мучаться вопросом типа: "Чей это end?". Например:

while not EOF (Text) do

begin

...

if NumOne = NumTwo then

begin

...

if (NumThree < 0) and (NumFour > 1) and (NumFive <> 0) then

begin

...

end; // if (NumThree < 0)...

...

end; // if NumOne = NumTwo

...

end; // while not EOF (Text)

Как ты можешь заметить, такие комментарии создаются легко (и быстро) простым копированием заголовка структуры.

Совет №11

Старайся писать комментарии на одном уровне, как это сделано в предыдущем примере.

Совет №12

Не лепи несколько команд в одной строке, даже если язык это позволяет, например:
For i=1 To 10: Print i: Next i
Возможность брейкпоинта должна быть у каждой команды, к тому же это ухудшает читаемость кода.

Совет №13

Пиши строки так, чтобы они влезали по ширине экрана. Горизонтального скроллинга быть не должно! Если строка не влезает, делай переносы (если, конечно, язык программирования это позволяет), например:
lbMyMessage.Caption: = ′Брошу′ + #13 + ′пить′ + #13 + ′курить′ + #13 +

edYourWord.Text + #13 + ′буду′ + #13 +

′спортом′ + #13 + ′заниматься...′;

Совет №14

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

Result = a * b % c / d + e;

Result = ((a * b) % c) / d) + e;

Совет №15

Если язык программирования поддерживает встроенные константы - используй их. Например, вместо комбинации Chr(13) + Chr(10) лучше использовать встроенную константу vbNewLine. Такие константы делают код самодокументируемым.

Совет №16

Еще один хороший совет для тех, кто пишет в "Блокноте": записывай сначала ключевое и заключительное слова, например, begin и end (или открывающуюся и закрывающуюся скобки составного оператора), а уже потом между ними пиши код. Это поможет избежать ошибок, к тому же просто удобно (визуальные среды это делают автоматически).

Совет №17

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

Совет №18

Иногда нужно быстро перейти к редактированию тела процедуры или функции, что в большом коде сделать геморно. Если начинать искать по имени, например, SaveLog, то редактор находит обращения к функции (процедуре), а не ее тело. В таком случае умные люди ищут по следующим фрагментам: "n SaveLog" (для функции) или "e SaveLog" (для процедуры), а профессионалы поступают еще проще: "n Sа" или "e Sа". Обрати внимание:

Procedure SaveLog (...

Function SaveLog (...

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

Совет №19

Активно пользуйся "горячими клавишами", такими, как:

Ctrl+Home - перейти на начало кода;

Ctrl+End - перейти в конец кода;

Ctrl+<стрелка вправо> - на начало следующего слова;

Ctrl+<стрелка влево> - на начало предыдущего слова;

Shift+<влево>, Shift+<вверх>, Shift+<вправо>, Shift+<вниз> - выделение участков кода;

Shift+Home - выделить от курсора до начала строки;

Shift+End - выделить от курсора до конца строки;

Ctrl+Y - удалить всю строку;

Ctrl+Z - отмена и др.

Я уж молчу о таких банальных комбинациях, как Ctrl+C, Ctrl+V, Ctrl+X. Вообще, незнание стандартных горячих клавиш, большинство из которых известно еще со времен ДОС, позорно не только кодеру, но и простому юзеру. Кроме того, в каждой IDE имеются свои горячие клавиши, знание которых может повысить твою производительность в десятки... нет... в тысячи... я бы даже сказал - в миллионы тысяч раз!

Совет №20

Ты должен четко понимать, что иногда эффективность кода идет вразрез с его понятностью (правда, я старался избегать таких советов). Тут нужно подходить по ситуации. Поэтому я тебе дам последний, двадцатый совет, взятый из книги Х. М. Дейтела и П. Дж. Дейтела "Как программировать на С++":
"Старайтесь программировать понятно. Иногда имеет смысл пожертвовать более высокой эффективностью использования памяти или процессорного времени в пользу написания более понятной программы. Иногда соображения эффективности далеко перевешивают соображения понятности".
К началу статьи





Добавил: LedWormДата публикации: 2005-05-31 15:09:31
Рейтинг статьи:5.00 [Голосов 1]Кол-во просмотров: 8394

Комментарии читателей

Всего комментариев: 1

2005-12-14 16:59:30
romodos
Весьма полезная статья, так же как и предыдущая. Хорошие советы для умных программеров
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

В какой обстановке Вы программируете?
.. с пивом и друзьями ночью
9% (16)
.. без пива, но с друзьями
2% (3)
.. с кофеваркой в обнимку
23% (40)
.. с мешком чего-нибудь хрустящего
15% (27)
.. один, но с Rammstein ..
51% (89)

Проголосовало: 175
Разговоp двух новых pусских:
- Я пентиум купил 400 герц!!!
- А что такое 400 геpц?
- ???... скоpость вpащения вентилятоpа!!!
Рейтинг: 3/10 (2)
Посмотреть все анекдоты