Ctrl+C, Ctrl+X и Ctrl+Arrow программисты

Oct 30, 2007 22:53

По сети часто путешествуют тексты, определяющие компьютерные интересы человека по стертым клавишам клавиатуры. Например, “w” - означает любителя шутеров, “backspace” - интернет-серфера, ну и так далее.

Про программистов там ничего не говорится. Действительно, можно только сказать, что у программиста, обычно, затерта вся клавиатура. А если на клавиатуре не затерта ни одна клавиша - значит, программист купил новую клавиатуру.

Хотя... вот по клавиатурным сочетаниям кое-что нагадать программисту можно. Итак...

***

Ctrl+C программисты известны многим. Про них даже ходят легенды, будто Ctrl+C программист, будучи лишен этой комбинации клавиш, в муках умирает.

Причина классовой ненависти проста: Ctrl+C программисты намереваются нажать на “Ctrl+V”!

При копировании из внешних источников, код переносится без изменений. Несмотря на то, что пример мог быть учебным или содержать баг. А может в перенесённом куске кода совпали (или не совпали) имена с реально существующими переменными.

А при копировании внутри проекта возникает известнейшая проблема "исправь '-' на '+' в 20 кусках кода". Проблема даже не в том, что приходится поддерживать большой объем кода, а в том, что достаточно забыть внести исправления в один параллельный кусок - и вот уже появился баг.

Первопричина и главная беда Ctrl+C программистов: после нажатия "Ctrl+V" программист забывает об этом куске кода и вспоминает только на отладке. Да и до нажатия на “Ctrl+C” код его тоже не сильно касается.

Из-за этого от Ctrl+C программистов не стоит ждать удобочитаемого (или иным способом хорошего) кода: для такого программиста он просто не представляет ценности.

Но у продвинутых Ctrl+C программистов очень удобно просить найти код или спрашивать ссылки на свалки и репозитории открытого кода - это они действительно знают лучше всех. И это свойство в некоторых ситуациях делает Ctrl+C программистов гораздо более полезными, чем программисты других типов.

О проектировании руками Ctrl+C программистов можно даже не заикаться. Да они могут, скопировать организацию другого проекта, но неумение думать в четырёх координатах (пространство-время) несовместимо с проектированием.

***

Не такие Ctrl+X программисты. Они тоже намереваются нажать на “Ctrl+V”, но кода на старом месте не остается - уже вырезан!

Ясно, что перетаскиванием кода туда-сюда не заставишь заработать программу. Как же Ctrl+X программисты умудряются писать хоть что-то?

Очень просто: они перетаскивают код потому, что в другом месте он будет выглядеть более осмысленно. Мало того, после перетаскивания, функция, исполняемая этим кодом иногда становиться, доступна и другим частям кода, чтобы не плодить повторения. Либо становиться, недоступна тем частям проекта, где она не нужна. А может быть, даже защищается от какой-либо ошибки.

Понятно, что если собрать все-все куски кода, которые только есть в мире и всех программистов ещё не похищенных марсианами… То решений как улучшить, исправить или приспособить код будет очень и очень много. Быть может, даже long long не хватит, чтобы все пересчитать.

Но вот решение Ctrl+X программистов будет отличаться от всех одним сочетанием клавиш, тем самым заветным "Ctrl+X". И она встретить далеко не по разу на решение.

В процессе вырезать-вставить-подправить (по-научному, называемому Continuous Refactoring) сердце умения Ctrl+X программиста.

И запомните: если программист начинает задумывать, как писать большой кусок кода - это не Ctrl+X программист. Ctrl+X программист сразу начинает писать код, а потом составляет из него решение. Расписывать всё в диаграмах (и не дай бог, в UML или другом стандарте) - не его способ. Ctrl+X программист может на это согласиться, но только если он сможет перемещая связи на диаграмме менять код. Иначе он начертит диаграмму, чтобы отмахнутся, накалякает код и занесёт руку над “Ctrl+X”. Самое смешное, что код будет работать, и даже не будет содержать кучу багов и впишется в систему классов.

Весь этот процесс, напоминающий Броуновское движение, обязывает писать Ctrl+X программистов хорошо защищенный от багов код. Иначе бы у них не работала бы ни одна программа. И стиль у них тоже очень хороший - в коде быстро может разобраться даже человек со стороны. А без стиля Ctrl+X программист и не программист - подумать только, он не может быстро подправить код или выделить новый метод! Какой ужас!

***

Ctrl+Arrow программисты более спокойны и с удивлением поглядывают на этих вечно-спешащих “C” и “X”. Да и не отличишь первых от вторых - все на “Ctrl+V” жмут.

Ctrl+Arrow программисты явно не такие. Предварительное обдумывание для них - это не просто слова.

Получив задачу, Ctrl+Arrow программист проведет маленькое исследование, прикинет, как это все впишется в структуре проекта и, перескочив на нужное место (при помощи “Ctrl+Arrow”) начнет вписывать маленькие, но очень важные изменения.

В этом большая доля прилежности и восхищения хорошо спланированным проектом. Бросаться ломать структуру классов Ctrl+Arrow программист не будут. А вот способ реализации изменит с удовольствием.

Правда, если в структуре проекта виден явный изъян, Ctrl+Arrow программист сядет (оторвет руки от клавиатуры), подумает и изобретет отличное решение позволяющее вписать элемент в дизайн.

В проектировании Ctrl+Arrow программист царь и бог. Иногда это может привести к священным войнам "UML против кодогенерации шаблонами", но, часто Ctrl+Arrow программист принимает структуру проекта такой, какая она есть и приступает к совершенствованию.

Что же касается стиля: для Ctrl+Arrow программистов он почти всегда является дитем проектирования. Сказано “паттерны кодогенерацией”, значит, на каждой второй строчке будут “<” и “>”. А бывает и чаще.

***

Конечно, сложно найти программиста, про которого можно будет сказать: "А! Я знаю, какую ты клавишу вместе с “Ctrl” нажимаешь!". Большинство то ли успешно маскируются, то ли умеют переключаться между состояниями, но их отношение к клавишам меняется от задачи к задаче.

И неизвестен ответ на вечный вопрос “кто круче?”. В разных проектах и подпроектах по-разному. Где-то нужна толпа Ctrl+X программистов, а где-то спокойная команда имени “Ctrl+Arrow”. И “Ctrl+C” клавишам тоже свои хозяева найдутся.

Главное - чтобы в одной команде не оказались адепты разных клавиатурных сочетаний. А то аллергия начнется.

programming, article

Previous post Next post
Up