Пишу сюда впервые и вы это читаете! Это означает, что мне понравилось, и будет больше контента, или мне не понравилось, и я не мог вычистить это из Интернета, потому что Интернет никогда не забывает.
Если вы знакомы с религией (христианством или даже пастафарианством), то вы, вероятно, знакомы с Заповедями. Знаешь, ты не должен…
Я хотел бы представить свой собственный, и вы можете запомнить его, используя слово «DipShit». Мои заповеди основаны на двух аббревиатурах, которые должен знать каждый программист (DRY и SOLID). Если вы попробуете их использовать, я могу гарантировать, что ваш код станет лучше! Так что же они?
- Вы не должны повторяться.
- Вы должны нести единую ответственность.
Вы не должны повторяться.
Давайте поговорим о первом, Не повторяйтесь!
Мне нравится думать, что единственная причина, по которой мы можем программировать, заключается в том, что мы не хотим повторяться. Думаю об этом. Вы читаете это в Интернете на каком-то устройстве. Устройство и Интернет — сложные вещи, и я рад, что мне не нужно перепрограммировать Интернет каждый раз, когда я создаю новое веб-приложение. Та же логика применяется в программировании, это причина существования фреймворков и пакетов. Я не хочу писать свой собственный JSON-парсер каждый раз, когда мне нужно его использовать. Давайте попробуем применить эту логику на примере.
Функция выше увеличит ввод на 5, но что мы видим? Строки со 2 по 6 повторяются, и первая заповедь — не повторяться. Итак, давайте попробуем, если мы можем удалить его, и мы можем! Мы можем удалить эти строки, увеличив число не на 1, а на 5
ПРИМЕЧАНИЕ. В некоторых случаях можно удалить повторяющийся код, но это ухудшит читабельность. Если это произойдет, НЕ удаляйте его, потому что код создан для людей!
Вы должны нести единую ответственность.
Возможно, вы знакомы с SOLID (если нет, не волнуйтесь, OLID сейчас не важен), и вы знаете, что S означает SRP, а это означает принцип единой ответственности. Но что мы имеем в виду?
Это означает, что все в вашем коде должно быть только одним.
Глупый пример, что вы думаете о пожарном, доставляющем почту?
Я думаю, это странно. Если этот человек боится пожаров, то почта не будет доставлена и наоборот. Было бы лучше иметь специального почтальона, доставляющего почту, и пожарного, тушащего пожары, и у нас это есть в реальной жизни.
Давайте попробуем применить это в коде!
Вышеупомянутая функция имеет 2 функции: запрос молока и запрос печенья. Это странно. Почему они должны быть в одной функции? Они не должны быть в одной и той же функции!
ПРИМЕЧАНИЕ. Если вы называете свои функции с их точным поведением и в нем есть «и», это может быть признаком того, что они не должны быть в одной и той же функции.
После разделения это выглядит так:
Теперь есть 2 короткие функции, и сложность снижена, потому что обе они имеют только один оператор if.
Тот же принцип применим и к более сложным объектам. Я хочу иметь отдельные функции для извлечения объекта из базы данных и его отображения. Сначала это может увеличить сложность, но в долгосрочной перспективе оно того стоит.
Заключение
Примеры здесь действительно просты намеренно. Попробуйте применить мои 2 заповеди в следующий раз, когда вам нужно будет что-то запрограммировать. Это облегчит понимание кода и его модульное тестирование!