1370 подписчиков
Давно не писал ничего про принципы программирования. Вот напишу вам про принцип программирования WET. Потому хотя бы, что он показывает, что никакому принципу программирования не следует следовать стопроцентно всегда.
Принцип WET противоположен принципу DRY("Don't repeat yourself" — «Не повторяйся!»). WET — "Write Everything Twice" — «Пиши всё дважды». По сути он говорит о том, что иногда именно попытка не повторяться сделает код менее понятным, читабельным, удобным и т.д. И лучше взять и повториться, скопировать тот код, который уже скопирован раньше.
Например, вы программист и у вас есть программа. В программе этой несколько окон, на двух из этих окон есть группа из кучи кнопок, которые полностью одинаковы. Вы отделяете эту группу кнопок, весь код, в отдельный модуль, и на обеих страницах просто подключаете код из этого модуля. Вы великолепны, не повторились.
А потом менеджер говорит, что нужно изменить программу. И в одном из этих окон группа кнопок остаётся такой же, а на другом должна немного поменяться, ну процентов на 5. Немного. Вы берёте модуль с группой кнопок и немного его переделываете, чтобы он проверял, что за окно и в зависимости от этого по разному себя вёл. Модуль из-за этого становится немного сложнее.
А потом ещё одно небольшое изменение, и разница вырастает, модуль становится сложнее. Потом надо эту же группу кнопок вывести в третьем окне, и опять немного по-другому. А потом на четвёртом. А потом немного меняется концепция этой группы кнопок на втором окне...
И модуль разрастается, разрастается, и вот уже там куча проверок, разное поведение на разных окнах. И вот уже он стал большим и сложным настолько, что трудно понять, что там именно написано, кучу времени приходится тратить на то, чтобы каждый раз разобраться и не ошибиться, вероятность ошибок растёт... И становится понятно, что лучше было бы без этого модуля. Что лучше было бы просто для каждого нового окна копировать и немного переписывать код группы кнопок.
Профессиональный программист должен предвидеть эту ситуацию и сразу написать один и тот же код несколько раз. Про такое повторение кода и говорит принцип WET, повторю, противоположный по смыслу принципу DRY.
В жизни принцип WET проявляется. например, в узкой специализации людей. Вместо того, чтобы на одного человека сваливать кучу ответственности и задач, начиная с какого-то уровня сложности они разделяются на разные профессии, специализации и должности. Вместо одного заместителя начальника появляются несколько заместителей, каждый со своей зоной ответственности. Психолог, психотерапевт, психиатр, невролог это разные профессии и занимаются они разным. В младшей школе один человек преподаёт и математику, и русский язык, и чтение и окружающий мир. А потом математика разделяется на алгебру и геометрию, окружающий мир на биологию, географию, химию, физику. И ведут их уже разные люди.
2 минуты
21 мая 2023