Четыре вопроса, которые вы должны постоянно задавать себе во время программирования

Большинство современных языков программирования общего назначения предоставляют огромное количество возможностей и способов его использовать. Часто их можно применять на целом наборе уровней абстракции, выбирая из десятков вариантов реализации определённой фичи. Некоторые возможности предназначены для разработчиков библиотек, другие для быстрой реализации приложений для конечных пользователей. И программисты не всегда пользуются оптимальными инструментами для своих задач.

Например, новички довольно часто применяют в коде низкоуровневые потоки, тогда как обычно намного выгоднее использовать более высокоуровневые вещи вроде workers, tasks или actors. С ними не только проще обращаться, зачастую они ещё и более точно подходят для решения исходной задачи.

Как понять, что именно оптимально подходит для решения задачи?

На самом деле это довольно сложный вопрос. Если ваша текущая задача кажется вам сложно реализуемой, то скорее всего вам надо просто сделать шаг назад, ведь «в программировании есть только две сложные вещи: инвалидация кеша, выбор имени переменной, и ошибки на единицу» (Джефф Этвуд).

А затем задайте себе несколько простых вопросов:

  1. Наверняка кто-то уже решал аналогичную задачу до меня. Поискал ли я подсказки или готовые решения других разработчиков?
  2. Существует ли (лучшая) библиотека, структура данных или абстракция для моей задачи?
  3. Мне действительно нужно решать эту задачу именно так? Наверняка должен быть лучший или более простой способ.
  4. Какие плюсы я получу от использования этой фичи, библиотеки или инструмента и сколько усилий это будет мне стоить? Есть ли альтернативы?

В качестве заключения

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

По материалам записи в блоге Mihael Vrbanec