В этом посте я научу вас всему, что вам нужно знать об оверинжиниринге и о том, как это делать правильно.

Не волнуйся, мой друг. Вы в лучших руках.

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

К концу этого руководства вы сможете взять приложение Hello World и превратить его в звездный разрушитель, готовый к следующим двум ядерным армагеддонам.

Давайте погрузимся прямо в:

Правило №1: Будьте перфекционистом

Вы не должны объединять изменения, пока они не станут идеальными!

Только представьте, что ваши конечные пользователи подумают о вашем несовершенном коде.

Да… Довольно неловко, не так ли?

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

Оптимизируйте, оптимизируйте, оптимизируйте! Подумайте о проблемах, которые могут возникнуть в будущем, и решите их прямо сейчас!

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

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

Правило № 2: всегда придерживайтесь принципов и лучших практик

Это очень важно, потому что это автоматически сделает вас хорошим программистом.

Вам никогда не нужно подвергать сомнению эти идеи, потому что они широко распространены и даже задаются на собеседованиях при приеме на работу.

Сосредоточьтесь на причудливых аббревиатурах, а не на проблемах, которые вы пытаетесь решить с их помощью:

ООП

Давайте будем реалистами. Зачем вам использовать функцию, когда вы можете использовать класс?

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

Если вы определяете класс, определяйте и интерфейс, потому что таким образом вы автоматически удовлетворяете «принципу инверсии зависимостей» SOLID.

Используйте «принцип единой ответственности» в качестве предлога, чтобы разбить связную логику на тысячи классов, пока вашим коллегам-разработчикам не придется часами собирать воедино то, что именно делает ваш код.

Сладкий! Теперь, когда у вас есть куча интерфейсов и классов, вы также можете начать использовать DI-фреймворк, который управляет зависимостями между вашими классами.

СУХОЙ

Не повторяйтесь.

Слушай... Ты должен сходить с ума с этим!

Если вы обнаружите фрагмент кода, повторяющийся в вашей кодовой базе, ОСТАНОВИТЕСЬ.

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

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

Шаблоны проектирования

Изначально определился по знаменитой книге «Банда четырех».

Относитесь к этому как к своей библии.

Никогда не задавайте вопросы новичка вроде «Не пора ли перейти к шаблону проектирования?». Качество вашей системы и количество реализованных шаблонов проектирования напрямую связаны. Так злоупотребляйте ими!

Всегда думайте о дизайне заранее и не позволяйте ему развиваться естественным путем, когда у вас возникают определенные проблемы с вашим кодом.

Прежде чем вы сможете начать экспериментировать и собирать отзывы, вы должны получить основы своей системы.

Микросервисы

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

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

Если это работает для компаний FAANG, это сработает и для вас.

Фреймворки и языки

Всегда подписывайтесь на новейшие тенденции и время от времени переписывайте все свое приложение, используя новый модный язык или структуру, о которой все говорят.

Это имеет огромную ценность для ваших клиентов, и ваши менеджеры будут очень гордиться вами.

Линтеры, форматировщики кода

Это инструменты, которые автоматически улучшают ваш код.

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

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

ЦЕЛОВАТЬ

Это просто полный бред для тупых программистов. Отсюда и название: «Keep It Sпросто Sглупый»

Правило № 3: Знайте свои приоритеты

Следите за мячом:

  1. Качество кода
  2. Архитектура
  3. Производительность

Правильно… ваши пользователи и время разработки даже не попали в список. Просто забудьте об этом.

Это не ваша забота.

Они просто отвлекали бы вас от важных вещей, таких как оптимизация задержки вашего REST API со 100 мс до 20 мс.

С другой стороны, вы должны быть очень заинтересованы в таких вопросах, как:

  • какой язык программирования лучше?
  • какая IDE лучше?
  • табы или пробелы?
  • светлая или темная тема?
  • Mac, Windows или Linux?

Сосредоточение внимания на этих важных деталях сделает вас лучшим программистом и в долгосрочной перспективе будет способствовать вашим достижениям.

Наконец, правило № 4: будьте уверены

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

Как бы они поняли? Хорошая работа требует времени.

Смотрите на них свысока и никогда не слушайте!

Если ваш менеджер попытается дать вам какие-то предложения, просто начните говорить о технических деталях. Это будет сбивать их с толку, пока они не оставят вас в покое.

И здесь мы идем

Теперь у вас на поясе есть все инструменты, чтобы решить любую проблему, которую они могут вам подкинуть.

В нашей профессии поиск до смешного сложных решений становится все более модным и даже считается лучшей практикой.

Ну, по крайней мере, так было во время бычьего рынка, когда у компаний было бесконечное количество денег, чтобы кормить наше эго.

Если у вас есть мысли, которыми вы можете поделиться, вы можете найти меня в Твиттере: https://twitter.com/karolyidav 👈

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу