Я как будто при рождении Скайнета поприсутствовал.
– Покажи мне код, – попросил я, не спеша принимать задачу. Нужно убедиться хотя бы в том, что Синклер не забыл уровни сложности сделать и играть, как тупой новичок, его алгоритм также способен.
Монти вывел на экран монитора паскалевские исходники с дискеты и… более отвратительной “лапши” я не видел, наверное, ни у одного джуна. Просто поток сознания, излитый на монитор. Возможно, гениальный поток гениального сознания. Но всего моего опыта не хватало, чтобы понять что-то большее, чем “это код на Паскале и он производит некие вычисления”. Да я не сразу разглядел даже самую тривиальную часть – место с парсингом ввода хода игрока.
Та самая “одна божественная процедура”, которая делает всё. Большой кусок чего-то непонятного и неструктурированного. И он еще утверждает, что был лучшим по информатике? Академия Бель Эйр только что с грохотом покатилась вниз в моем рейтинге учебных заведений.
“Ну что, товарищи, коллектив у нас квалифицированный, работа проделана большая, у меня лично сомнений нет – это дело так не пойдёт!”
Глава 12
– Глядя на этот код, мне хочется вызвать копов, чтобы они отправили тебя за решетку за психологическое насилие над коллегами, – объявил я. – Спагетти, конечно, угодны Макаронному Монстру, но у тебя с ними перебор.
– Спагетти? Конкретику, пожалуйста, – не стушевался Монтгомери, – я адекватно воспринимаю критику. Наоборот, мне ее очень не хватает. Нанятые преподаватели, шахматные тренеры и школьные учителя все время меня хвалили и складывалось ощущение, что не всегда заслуженно. Льстили, лишь бы не терять заработок.
– Давай я расскажу основные принципы, которых придерживаюсь, а ты уже сам сделаешь выводы, что в твоей программе не так.
Как бы ни хотелось разнести его писанину в пух и прах – это не наш метод. Парня надо подтолкнуть не бросать программирование и развиваться в правильную сторону, а не самоутверждаться за его счет.
– Самое важное, что ты не учел, а преподаватели, скорее всего, не рассказывали, в том, что мы пишем код не только для компьютера, который будет его исполнять, но и для людей. Самого себя и других разработчиков – всех, кому предстоит читать и дорабатывать программу. Всегда пиши код так, будто поддерживать его будет склонный к насилию психопат, который знает, где ты живешь. Я не про себя, если что!
Линда не удержалась от тихого смешка. Да и Синклер понял, что угроза шуточная и широко улыбнулся.
– Пойдем сварим еще кофе, тут напрашивается целая лекция.
И я ее прочитал – про большую часть принципов организации кода, известных мне из опыта будущего. Пару раз пришлось себя одергивать, так как многое, те же SOLID, шло в контексте, неприменимом ни к голому процедурному необъектному Паскалю, ни к Си без плюсов. “Никакого ООП, никаких тебе классов”!
Но все одно рассказал самые базовые вещи вроде понятных имен переменных: это железяке-то все равно, а вот живому кодеру не нужно гадать, что значит какая-нибудь одинокая буква. Упомянул про избавление от “магических чисел” в пользу нормальных констант. Про чистые функции, которые всегда возвращают один и тот же результат при одинаковых аргументах. Про компактный код, не вылезающий за пределы одного экрана. О правильных комментариях, объясняющих, “почему” так написано, а не работающих капитаном Очевидность в духе “это счетчик цикла”.
Вместе с Синклером меня с не меньшим интересом слушала Линда. Старался именно для нее говорить и смотреть ей в глаза. Девушка всегда моими рассказами интересуется, вероятно, из-за влюбленности. А к окончанию не такого и короткого выступления обнаружил, что добавился еще один зритель – мисс Селеста Скай, незаметно проскользнувшая сначала в дом, затем в комнату.
– Браво! Браво, мистер Коламбус! – эмоционально захлопала она в ладоши. – Я совершенно ничего не поняла, но ваш пассаж про “компьютеру нужна математика, а человеку – читаемый текст” – горячо поддерживаю. Не надо делать людей пластиковыми!
Линде тут же достался от нее поцелуй в щечку, а Монти полноценный, в губы, от которого у юноши наверняка выветрилась из головы половина моей импровизированной лекции. Хорошо, что он дисциплинированно записывал. Я удовольствовался рукопожатием.
– Общие принципы я уяснил, – резюмировал тему моего выступления Синклер. – Необходимо сосредоточиться на том, чтобы алгоритм не только выполнял свою задачу, но и оставался понятным постороннему программисту.