Я вважаю за краще версію без дужок, де це можливо.
Наступне пояснення довге. Будь ласка, нехай зі мною. Я дам переконливу причину для того, щоб я віддав перевагу цьому стилю. Я також поясню, чому я вважаю, що звичайний контр-аргумент не дотримується.
(Поблизу) порожні рядки - це марно
Причиною цього є те, що для закриття дужки потрібен додатковий рядок коду - і це робиться для вступної дужки, залежно від стилю. 1
Це велика справа? Поверхово, ні. Зрештою, більшість людей також кладуть порожні рядки у свій код, щоб розділити логічно трохи незалежні блоки, що значно покращує читабельність.
Однак, я вважаю, що витрачаю вертикальний простір. Сучасні монітори фактично мають достатньо горизонтального простору. Але вертикальний простір все ще дуже і дуже обмежений (якщо ви не використовуєте монітор, повернутий вертикально, що не так вже й рідко). Цей обмежений вертикальний простір є проблемою: загальновизнано, що окремі методи повинні бути якомога короткішими, а відповідні дужки (або інші роздільники блоків) повинні бути не більше висоти екрана в різниці, щоб ви могли бачити весь блок без прокручування.
Це основна проблема: як тільки ви більше не можете бачити весь блок на екрані, це стає складніше зрозуміти.
Як наслідок, я відчуваю зайві порожні рядки. Там, де окремі порожні рядки мають вирішальне значення для розмежування незалежних блоків (просто подивіться на візуальний вигляд цього тексту), послідовні порожні рядки є дуже поганим стилем у моїй книзі (і на мій досвід вони зазвичай є ознакою початківців програмістів).
Так само повинні бути лінії, які просто містять дужку, і які можна економити. Блок з одним оператором, який розмежований дужками, відходить один-два рядки. Маючи лише 50 лінійних рядків на висоту екрану, це помітно.
Пропуск брекетів може не нашкодити
Є лише один аргумент проти пропускання дужок: хтось згодом додасть ще одне твердження до відповідного блоку і забуде додати дужки, тим самим ненароком змінивши семантику коду.
Це дійсно було б великою справою.
Але, на мій досвід, це не так. Я неохайний програміст; і все ж, за десятиліття досвіду програмування, я можу чесно сказати, що я не раз забував додати дужки, додаючи додатковий вислів в блок однотонних.
Я навіть вважаю малоймовірним, що це має бути поширеною помилкою: блоки - це основна частина програмування. Роздільна здатність і визначення рівня блоків - це автоматичний розумовий процес для програмістів. Мозок просто це робить (інакше міркувати про програмування було б набагато важче). Не потрібно додаткового розумового зусилля, щоб запам'ятати ставлення дужок: програміст також пам’ятає правильно відступити щойно доданий вислів; тож програміст вже подумки обробив, що задіяний блок.
Зараз я не кажу, що пропуск брекетів не спричиняє помилок. Я говорю, що у нас немає жодних доказів так чи інакше. Ми просто не знаємо, чи завдає шкоди.
Тому, поки хтось не зможе показати мені важкі дані, зібрані з наукових експериментів, продемонструвавши, що це справді проблема на практиці, ця теорія залишається " просто так ": дуже переконливою гіпотезою, яка ніколи не була перевірена, і що повинен НЕ використовуватися в якості аргументу.
1 Ця проблема іноді вирішується, якщо все - включаючи брекети - розміщувати на одній лінії:
if (condition)
{ do_something(); }
Однак я вважаю, що можна сказати, що більшість людей це зневажає. Крім того, у нього будуть ті самі проблеми, що і у варіанта без дужок, тому це найгірше для обох світів.