is_реклам:

пошук, категорії та ін. показати ▼

Чудовий пробіл

Чудовий пробіл
автор опубліковано

Пробіл - один з найбільш ефективних коментарів.

Це здається дрібницею, але воно це може надзвичайно покращити читабельність Вашої програми. Зверніть увагу, як використовуються пробіли в цьому пості в якості організуючого засобу, і Ви зрозумієте, як використовувати їх в своїй власній програмі. Порожні рядки (або відступ в першому рядку) візуально розділяють абзаци. Пробіл слідує за крапкою, але не повинен її випереджувати, тому що крапка завершує щось. Ідея Вам зрозуміла :). А ось правила:

  • розбивайте текст програми на логічні шматки (тобто абзаци), де кожен шматок виконує одну операцію. Оточіть ці шматки або пустими рядками, або рядками з фігурними дужками
  • за розділовим знаком завжди має бути пробіл
  • оператори є скороченнями слів. Коли Ви бачите "+", то говорите "плюс". Подібно будь-якому скороченню, Ви маєте оточити ідентифікатор пробілами. (Наприклад: a + b читається "a плюс b", a+b читається "aплюсb" Відчуваєте різницю?)
  • виключення складають унарні оператори, які розглядаються як словесні префікси або суфікси (*p, a--, f(arg,arg) і т.д.)
  • або -> в С/С++ є еквівалентом символу підкреслювання. До і після них пробілів не має бути: p->msg(), obj.msg()

Ось приклад того, що може відбутися, коли Ви щось запаковуєте надто щільно. Розглянемо:

int *p;
y=(x/*p++);
f(int /*пояснення*/);

Якщо Ви знищите коментарі, то отримаєте:

int *p;
y=(x
     );

Сполучення /* у виразі y=(x/*p++) розцінюється як символ початку коментара, який закінчується сполученням */ у виклику функції f(). Такий випадок дійсно може статися, і знадобиться цілий день, щоб в ньому розібратися. Звичайно, компілятор не дасть повідомлення про помилку, тому що тут все синтаксично вірно.

Ще одне зауваження по цьому приводу. Часто приходиться бачити оголошення, подібні наступному:

int*	x;

Проблема у тому, що:

int*	x, y;

не оголошує два вказівники, як підказує розподіл пробілів. Пробіли треба розподіляти уважно і розуміти для чого це робиться. Після правильного форматування

int    *x, y;

стає абсолютно очевидно, що x - вказівник, а y - ні.

І накінець - порада: використовуйте в якості відступу чотири пробіли.

Ніколас Вірт, який винайшов мови Паскаль і Модула-2, одного разу випустив книжку, де всюди використовувались відступи в один символ. Читання лістингів в ній може стати найскладнішим випадком у Вашій практиці. Використовуйте досить великі відступи, аби Ваш читач міг сказати, що в тексті видно абзаци; чотири пробіли здаються ідеальними.

Ви маєте ставити пробіли послідовно. Навіть у зовнішньому блоці підпрограми мають бути відступи. Такий варіант непридатний:

void f ( void )
{
if ( x )
    yyy();
more_code();
even_more_code();
}

тому що надто важко знайти початок підпрограми. Порівняйте попередній варіант з наступним:

void f ( void )
{
    if ( x )
        yyy();
    more_code();
    even_more_code();
}

Робіть свої висновки і використовуйте такий важливий коментар як пробіл завжди, коли це потрібно!

В наступному пості ми поговоримо про розміщення коментарів і важливість абзацних відступів при написанні умовних операторів.

Ці та багато інших порад Ви знайдете в книжці Ален И. Голуб. Правила программирования на Си и Си++ .

схоже за тегами

Коментарів 7

  1. Іра пише: Відповіcти

    хм,дійсно для легшого читання та візуального сприйняття коду програми,а також її правильності,як виявилось ,такі зовсім невідомі та ,на перший погляд,незначні речі відіграють чималу роль.

    • Ангелина пише:

      Так і є! Особливо мені сподобалось як відсутність пробілів перетворює ділення на вказівник у коментар.

  2. Иногда глупо придерживаться строгого оформления кода. Есть случаи, когда удобней читать код в одной строке, иногда аккуратно с переносами в другие. Как по мне: главное, что бы автор свободно “владел” кодом и грамотно объяснял с помощью комментариев, которые не будут мешать чтению самого кода.

    • dnister.lark пише:

      Якщо використовувати різні інструменти перевірки якості коду ( наприклад: JSLint) тоді питання строгого оформлення коду стає дуже актуальним.

      На рахунок того, що автор має вільно володіти кодом, це звичайно чудово, але як бути в ситуації коли над одним кодом працює кілька людей ( і на додачу вони знаходяться в різних часових поясах, що унеможливлює живу зустріч), або використовуючи сторонній код у своїх додатках ( використання плагінів, модулів, або бібліотек, але при цьому необхідно переробити деяких їх функціонал під свої цілі). Як на мене головна задача коду — це у доступній формі перенести ідею, яку хотів реалізувати автор, іншим людям які його читають.

      На рахунок використання коментарів в коді рекомендую почитати Р. Мартіна – Чистий Код

    • Ангелина пише:

      Саша, ти хороший програміст. І якщо будеш писати хороший код, то інші будуть з ним працювати роками.
      Програміст-одиночка може писати хоч у рядочок, хоч у стовпчик, хочу утворювати фігури з коду, але якщо він працює не один (а будь-який хороший програміст буде приймати участь в такому проекті, де будуть і інші спеціалісти), він змушений писати код читабельно.

  3. Отвечу сразу обоим: когда идёт работа в команде, существует строгая договорённость между членами команды, не более. При этом главным становиться отнюдь не читабельность, а имена переменных, функций и методов. А так же, само собой разумеется, производительность.
    В данной теме был С++, потому могу посоветовать такую ссылку. Часто помогает улучшить и свой стиль, и выбрать конкретный команде. http://habrahabr.ru/post/172091/

    • Ангелина пише:

      Саша, якщо команда це Ви і Андрій, то все ок. Але коли в неї прийдуть, наприклад, Максим з Миколою, прийдеться заново домовлятися про правила, або нав’язувати їх новачкам. А коли ви всі прийдете на фірму, в якій працює біля 1000 чоловік, вам розкажуть хто є хто і які правила діють.
      Різниця тільки в орієнтованості програміста – на себе чи ні. Але життя все виправляє)

Залишити коментар:

Яндекс цитирования UA TOP Bloggers