Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Совершенный код. Мастер-класс - Макконнелл С.

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 348 349 350 351 352 353 < 354 > 355 356 357 358 359 360 .. 426 >> Следующая

кода. В листинге 31-23 приведен пример ухудшения этого стиля
при его применении в более сложном условном выражении:
Ш Листинг 31-23. Более типичный пример, в котором
форматирование в конце строки является неудачным решением
(Visual Basic)
If ( soldCount > 10 And prevMonthSales > 10 ) Then If (
soldCount > 100 And prevMonthSales > 10 ) Then If ( soldCount
> 1000 ) Then
markdown =0.1 profit = 0.05 Else
markdown =0.05 End If
Else
markdown = 0.025 End If
Else
markdown =0.0 End If
728 ЧАСТЬ VII Мастерство программирования
В чем причина причудливого форматирования выражений Else в
конце примера? Они последовательно выровнены под
соответствующими ключевыми словами, но вряд ли можно
утверждать, что такие отступы проясняют логическую структуру.
И если при модификации кода изменится длина первой строки,
такой стиль форматирования потребует изменения отступов во
всех соответствующих выражениях. Так что возникает проблема
сопровождения, которой не существует для стилей явных блоков,
их эмуляции и использования пар begin-end для обозначения гра-
ниц блоков.
Вы можете решить, что эти примеры придуманы лишь в
демонстрационных целях, но такой стиль применяется очень
упорно, несмотря на все его недостатки. Масса учебников и
справочников по программированию рекомендует этот стиль. Самая
первая увиденная мной книга, содержащая эту рекомендацию, была
опубликована в середине 1970-х, последняя - в 2003 году
Вообще форматирование в конце строки неаккуратно, его сложно
применять единообразно и тяжело сопровождать. Далее я приведу
другие проблемы такого стиля.
Какой стиль наилучший?
При работе в Visual Basic используйте отступы для явных блоков
(тем более что в среде разработки Visual Basic затруднительно
не придерживаться этого стиля).
В Java стандартной практикой является применение формата явных
блоков.
В C++ можно просто выбрать тот стиль, который вам больше
нравится или которому отдают предпочтение большинство
разработчиков вашей команды. Как эмуляция явных блоков, так и
обозначение границ с помощью begin-end работает одинаково
хорошо. Единственное исследование, сравнивавшее эти два стиля,
не обнаружило статистически значимых различий между ними с
точки зрения понятности кода (Hansen and Yim, 1987).
Ни один из этих стилей не обеспечивает защиты от дурака, и оба
время от времени требуют "разумного и очевидного" компромисса.
Вы можете предпочесть тот или иной стиль по эстетическим
причинам. В этой книге в примерах кода применяется стиль явных
блоков, так что вы можете увидеть массу иллюстраций этого
стиля, просто просмотрев листинги. Выбрав однажды стиль, вы
получите наибольшую выгоду от хорошего форматирования,
применяя его единообразно.
31.4. Форматирование управляющих структур
Перекрестная ссылка 0 документировании управляющих структур
см. подраздел "Комментирование управляющих структур" раздела
32.5. О других аспектах управляющих структур см. главы 14-10.
Форматирование некоторых программных элементов часто является
только эстетическим вопросом. Однако форматирование
управляющих структур влияет на удобство чтения и понимания и
поэтому имеет практическое значение.
Тонкие моменты форматирования блоков управляющих структур
Работа с блоками управляющих структур требует внимания к
деталям. Вот некоторые советы.
ГЛАВА 31 Форматирование и стиль
729
Избегайте отсутствия отступов в парах begin-end В стиле
форматирования, проиллюстрированном в листинге 31-24, пара
begin-end выровнена по границе управляющей структуры, а в
выражениях, охватываемых операторами begin и end, сделаны
отступы относительно begin.
Листинг 31-24. Пример пары begin-end, не выделенной отступами
(Java)
I- Ключевое слово begin выровнено по границе for.
*->Tfor ( int 1=0; i < MAX_LINES; i++ )
I- В выражениях сделан отступ относительно begin.
Ч>Г ReadLine( i );
L ProcessLine( i );
i- Слово end также выровнено по границе структуры for.
Ч>}
Хотя такой подход выглядит хорошо, он нарушает Основную
теорему форматирования, так как не показывает логическую
структуру кода. При таком расположении begin и end не являются
частью управляющей структуры, но в то же время, они не
являются и частью блока выражений, расположенного далее.
Листинг 31-25 демонстрирует абстрактное представление этого
подхода:
Листинг 31-25. Абстрактный пример вводящего в заблуждение
выравнивания

Можно ли сказать, что оператор В подчиняется оператору А? Он
не выглядит частью оператора А, и нет оснований считать, что
он ему подчиняется. Если вы используете такой подход, смените
его на один из двух вариантов стиля, описанных ранее, и ваше
форматирование будет более целостным.
Избегайте двойных отступов при использовании begin и end
Следствием правила относительно использования пары begin-end
без отступов является случай, касающийся дополнительных
отступов после begin-end. Этот стиль, продемонстрированный в
листинге 31-26, содержит отступы как перед begin и end, так и
Предыдущая << 1 .. 348 349 350 351 352 353 < 354 > 355 356 357 358 359 360 .. 426 >> Следующая