[Из песочницы] Текстуры кода
Нет, это не опечатка. В этой заметке речь пойдет не о структурах, а именно о текстурах программного кода.
Чтобы объяснить, что это такое и почему это понятие для меня важно, я расскажу вам одну историю.
Это было очень давно, в конце семидесятых годов двадцатого века. Мы тогда программировали одну большую (по тем временам) систему. Понятия IDE (Integrated Development Enviropment) ещё не существовало и для ввода программного кода мы пользовались Редактором (Editor).
Используемый нами Редактор имел одну интересную особенность. Загружая файл с программным текстом с диска, он сначала показывал его, «прокручивая» на экране монитора от первой строчки до последней. Загружаемый текст весьма быстро пробегал перед глазами, так что разобрать отдельные строчки в это время было трудно.
Однажды утром мой коллега, работавший за соседним столом, вдруг громко сказал: «Ах красота какая!». Он не было уж очень эмоциональным человеком и потому мы заинтересованно направились к его столу, чтобы понять причину этого восторга.
Оказалось, что он накануне получил задание слегка подправить программу, написанную ранее одним из наших гуру. Для скопившихся за его спиной зрителей он снова включил загрузку программного текста с диска. И и по экрану снизу вверх быстро поплыли строчки программного кода. Но это были совсем другие текстуры из точек и пунктирных линий, чем те, к которым мы привыкли. Они были полны гармонии и какой-то магии. Они были действительно редкостно красивы и буквально завораживали. Мне подумалось тогда: «Разве может такой код быть неправильным?»
Ясно, может. С тех пор я просмотрел, иногда проанализировал, иногда исправил или написал сам миллионы строчек программного кода на самых разных языках программирования. И в большинстве случаев я убеждался, что хорошие программисты выдают «красивый» код, а высококлассные — не просто «красивый», но и какой-то «оптически гармоничный».
Однако, я должен оговориться. Это правило касается только вручную написанного кода. Генераторы выдают иногда очень структурированный, но полный ошибок код.
Структуры и текстуры кода
Ну вот мы почти договорились о понятиях. В отличие от классической структуры программного кода, которая задается разбиением его на составные части и форматом отдельных частей, под текстурой программного кода мы будем понимать его визуальное представление на экране.
Понятно, что текстуры, которые мы видели тогда, в семидесятых годах, или которые сегодня можно наблюдать на современных мониторах высокого разрешения, являются в конечном счёте отражением структур программного кода.
Когда речь заходит о структурах программного кода, в голову почти автоматически приходят шаблоны (паттерны) программирования.
По моему мнению, использование или неиспользование классических шаблонов программирования мало влияют на то, получится ли код «красивым».
На красоту кода влияют совсем другие структуры. Эти структуры можно разделить на несколько иерархических уровней.
Первый уровень обеспечивают сегодня хорошо сконфигурированные редакторы кода, встроенные в IDE. Они автоматически подравнивают отступы, добавляют забытые скобки и другие символы, а также генерируют правильно отформатированные скелеты кода стандартных методов или функций.
Структуры второго уровня зависят от выбора ответственности для отдельных программных блоков (например — классов или методов), реализации наследования и группирования мелких блоков в крупные. Именно эти структуры второго уровня решающим образом влияют на текстуры кода и его «красоту».
Очевидно, что оптическая красота кода не является целью профессионального программирования. И всё же, когда я вижу оптически элегантные конструкции кода, меня часто тянет прокрутить на экране код дальше и, может быть, увидеть ещё парочку симпатичных кодовых текстур.
Вместо заключения
Так что же я хотел сказать этой заметкой? А вот что:
Структуры кода отражают структуры мысли.
Текстуры кода отображают структуры кода.
Тем самым: Текстуры кода — это одна из материализаций мысли.
Если программный код получился оптически красивым, значит и мысли создателя были элегантными. А элегантность и стиль мышления — неотъемлемые признаки высокого профессионализма.
И под конец — моё обращение к программистам:
Обращайте внимание и наслаждайтесь красивыми текстурами кода, если таковые вам встретятся. Это удовольствие доступно только людям нашей с вами профессии.