Alexander Temerev (sorhed) wrote,
Alexander Temerev
sorhed

Признание в страшном.

Я ненавижу программировать.

Нет, не так. Программировать я люблю. Я ненавижу писать код.

Каждая строчка кода появляется на свет с первородным грехом — она виновна в своём существовании задолго до того, как я запущу компиляцию. Код — это отвратительно. Каждый объявленный тип, каждая фигурная скобка — всё кричит о своей порочности подобно изгнанному из Эдема человеку по Кальвину.

Единственное оправдание существованию кода — его способность решать проблемы. (Необязательно рабочие проблемы — например, написание того или иного кода может служить высокой цели познания мира). Но для того, чтобы оправдать своё существование, каждой строчке кода нужно выплатить много-много долгов, которые она берёт на себя автоматически при рождении. Лучший код — отсутствие кода. Но поскольку отсутствие кода не всегда умеет решать проблемы, лучший код — это минимально сложный код, решающий данную задачу. В идеале — просто обращающийся к библиотеке, которая уже умеет эту задачу решать.

Из этого следуют некоторые особенности моего стиля программирования, которые я считал самими собой разумеющимися много лет подряд, пока не столкнулся с людьми, которые по какой-то непонятной причине любят писать код. Эти особенности таковы:

— Если кто-то уже сделал решение проблемы — его необходимо использовать. За исключением тех случаев (где-то 0.5%), когда разобраться в чужой библиотеке сложнее, чем написать своё решение, или она создаёт дополнительную сложность при интеграции.

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

— Экспрессивные языки, где одной строчкой можно выразить целую поэму (Scala) лучше стандартизированной манной каши, где на описание простейших вещей требуются горы прелюдий (Java и особенно C++). Но дело не в количестве символов, а именно в воспринимаемой сложности, поэтому к языкам вроде J, где многие вещи укладываются вообще в несколько знаков, я отношусь скептически (хотя и ценю их порыв).

— Система должна состоять из отдельных самодостаточных компонентов, каждый из которых может быть запущен, протестирован и охвачен мятущимся программистским разумом независимо. Количество зависимостей между компонентами должно стремиться к нулю. Даже общая зависимость от Common-модуля уже начинает меня немножко нервировать.

— Когда я слышу слова «а что если завтра...» (обычно сопровождаемые предложением ввести в проект некоторую функциональность, не нужную прямо сейчас), я хватаюсь за пистолет. Завтра никогда не наступает. А если и наступает, то обычно оказывается совсем не таким, как предполагали.

— При рефакторинге кода моя любимая кнопка — это «Delete». Каждый раз, удаляя класс, я радуюсь как ребёнок.

А как к написанию кода относитесь вы?

Update: "The price of reliability is the pursuit of the utmost simplicity.” (с) Тони Хоар. Молодец, рубил фишку.
Tags: fp
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 125 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →