Мне нередко снится кодирование. Я часто просыпаюсь со свежими идеями о чем-то, с чем я боролся накануне. Сегодня утром я проснулся от подобного сна; однако прозрение, которое оно вызвало, было намного сильнее, чем обычно.
Перед Богоявлением
Со временем я начал писать функции своим стандартным способом. Типичная функция будет выглядеть примерно так:
Этот пример только для того, чтобы дать вам представление о структуре. Теперь я промываю и повторяю это, создавая дополнительные функции, такие как getRecords
, addRecord
, updateRecord
, deleteRecord
и т. д.
Просто используя мой базовый пример, я повторяю более 90% своего кода внутри этих функций. Каждая функция имеет блок try/catch
. Каждая функция имеет несколько вызовов console
. Я знал, что это не идеально. Я просто не знал, как его улучшить.
Что еще хуже, я склонен менять свои стандарты. Это может быть такая глупость, как изменение catch (error)
на catch (e)
. Затем срабатывает мое обсессивно-компульсивное расстройство, и следующее, что вы знаете, я потратил час, просто просматривая и внося это изменение повсюду.
После Богоявления
Я всегда изучаю новые концепции и недавно начал прилагать много усилий для понимания лучших практик, таких как принципы SOLID и шаблоны проектирования в целом. Я думаю, что работа с примерами этих концепций зажгла искру моего прозрения.
Давайте приступим к этому…
Во-первых, я подумал о том, что вы можете передать функцию как параметр другой функции. Поэтому я хотел посмотреть, смогу ли я стандартизировать свой метод try/catch
блоков.
Теперь каждый раз, когда я хочу «обернуть» функцию в свой стандартный блок try/catch
, я просто передаю функцию в свою функцию tryWrapper
. Основные преимущества такого подхода:
- Я больше не повторяю код
try/catch
в каждой функции. - Я могу изменить
tryWrapper
в любое время, и изменение будет отражено везде, где оно используется.
Затем мне нужно было добавить мой стандарт для регистрации сообщений. Единственная сложность здесь в том, что я хочу, чтобы имя основной функции отображалось в сообщении журнала. Для этого я создал объект, который будет содержать все мои «основные функции». Затем я создал logWrapper
аналогично моему tryWrapper
.
Заключение
Ух ты! Это придает совершенно новый смысл фразе: «Я могу делать это во сне!»
Именно так я и мечтал! Так много преимуществ в этом подходе:
- Уменьшает количество кода
- Сокращает время разработки
- Упрощает устранение неполадок
- Предоставляет расширяемую структуру (например, я мог бы добавить
tryAsyncWrapper()
) - Реализует несколько принципов SOLID
Спасибо за ваше время! Я всегда ценю любую обратную связь!
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Посмотреть больше контента в разделе Кодирование на уровень выше
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн
- 🚀👉 Вакансии для инженеров-программистов