Все практики хорошей архитектуры базируются на идее того, что требования будут меняться — и именно чтобы облегчить последующую поддержку — мы добавляем абстракции, паттерны, следуем SOLID-у и вот это вот все. Это, кстати, делает проектирование ПО очень сильно отличающимся от других видов разработки. Например, при проектировании моста никому в голову не придет на середине строительства превращать подвесной мост в разводной — а при разработке ПО считается, что проектировать надо так чтобы в любой момент любой слой можно было заменить безболезненно — переходя от реляционной БД к документно-ориентированной и обратно.
Беда в том, что спроектировать систему и угадать — какие именно будут изменения — а значит какие именно абстракции нужны — практически невозможно — а значит все эти абстракции оказываются избыточными — и в тоже время отказ от абстракций делает код трудно поддерживаемым. В шахматах такая ситуация — когда любой ход только ухудшает ситуацию — называется цугцвангом.
Представим себе молодого или не очень разработчика с несложной задачей — написать сервис который что-то получает по http, как-то элементарно меняет и отдает это в кафку (ETL-сервис). Если использовать высокоуровневые фреймворки — то код который все это выполняет уместится в 10 строк (не считая конфига). Но наш разработчик знает что должен быть слой контроллеров и слой сервисов. Далее, он задумывается — “что если завтра надо будет слать не в кафку в еще куда-то” — и делает абстрактный сендер с реализацией кафка сендер. А что если слать надо будет в разные топики — в зависимости от тела запроса? И он делает абстрактный тополоджиРесолвер с единственной реализацией — конкретным топиком. И, кстати, делает абстрактный бодиКонвертер — вдруг завтра поменяется формат передаваемых данных, абстрактный же мессаджКонвертр — вдруг завтра надо будет слать сообщения в другом формате.. Наконец. добавляет абстракцию фильтров, обработчиков ошибок отправки, обработчиков успешной отправки, слой репозитария (с пустой реализацией)… и гордо выставляет это на прод.
Проходит полгода — приходит молодой сотрудник которому он передает код. И молодой сотрудник видит семь абстрактных классов и две абстрактные фабрики — с пустыми реализациями. И у него возникает сложнопреодалимое желание запихнуть в жопу предшественнику всю банду четырех — вместе с Мартинами (Фаулером и Робином) в придачу.
Но возможна и другая ситуация — первый разработчик не заморачивается абстракциями — а фигачит все в контроллере — один метод на который мапится POST-запрос — в нем и преобразование данных и отправка в кафку. Но — проходит месяц и его просят добавить фильтр, слать не только в кафку но и писать в базу, при ошибке отправлять емэйл — в итоге он по чуть-чуть “дописывает” свой код — превращая его в макарону. Проходит пол года — он передает код другому сотруднику — тот видит макаронину кода и исполняется желанием запихнуть в жопу предшественнику всю банду четырех…
Есть еще вариант найти “почти готовое решение” для задачи — типа апач кэмела, спринг интегрешенала или кафкаконнекта — в которых “все работает из коробки” и задачку “переслать POST-запрос в кафку” можно сделать вообще без кода . Но пройдет пол года, сервис передадут другому человеку, его потребуется доработать — что потребует уже чуть более глубокое знание этих фреймворков — и поддерживающий будет думать — какого хрена здесь этот фреймворк вместо того чтобы самому написать 30 строк тривиального кода — разбирайся теперь с ним, да еще и обновляй до последней версии…
Я успел побывать во всех ролях — и передавал код-макаронину, и передавал равиоли-код с кучей абстракцией. И брал в поддержку код с безумным количеством слоев и брал в поддержку код с методами на 7000 строк делающими все что можно.
Очень редко но бывало и так что абстракция прям “подошла” когда для запуска сервиса с новыми требованиями хватило лишь добавить новую реализацию — но, увы, это редкость.
Вывод из этого только один — принять как должное, что предугадать в каком направлении будет меняться проект — практически не реально. И если “не угадали” — не испытывать комплекс самозванца. Относиться к “гибкой архитектуре” и “бест практикс” с уважением — но без фанатизма — не ленясь разбивать код по слоям и сервисам — но только тогда когда это действительно нужно — а не городя фасад абстрактных генераторов в трех строчках кода.
61 ответ к “Размышления о практиках хорошей архитектуры”
Судя по тенденциям с работой и зарплатами, думать и ломать голову над архитектурой = облегчать работодателю замену тебя на более дешевого вкатыша, т.е. плохая практика 🙂
С такими зарплатами никто об архитектуре и думать не будет.
Разве что молодой специалист, которому вся эта возня с технологиями интересна.
Хотя он может наваять такого, что это потом 3 года разбирать будут.
Там где работодатель готов заменить нормального разработчика на трейни-говнокодера по определению не может быть нормальной архитектуры. Там где над архитектурой ломали голову по определению не будут заменять нормальных кодеров, потому что это выстрел себе в ногу. Промежуточные варианты очень редки.
От этой статьи у меня случился приступ ПТСР. Довольно весело, я kind of успел повидать всё из перечисленного
Ты из лгбт чтоли? Не можешь как нормальные люди писать?
Открой любую книгу из классической литературы и ты удивишься, как много там иностранных слов.
Хотя бы ту же «Войну и мир». Там полно французского.
Почему так происходит? Потому что некоторые слова на конкретном языке более точно передают смысл образа и мысли, которые хочет донести автор. И использование иностранных слов только лишь показывает кругозор и образованность автора.
Более того, есть такое понятие, как заимствование — это когда в один язык проникают слова из другого языка. И это абсолютно нормально (без фанатизма, конечно).
Единственное, что мне не нравится — это когда пишут иностранное слово, базирующееся на латинице, — кириллицей.
А слово юзать вместо использовать не раздражает?
Раздражает))) Но я не нервный. Обычно)))
Точнее фрустрирует, хотя по мне так слово фрустрация вносит неясность и по мне так уступает нашему скрепному варианту. Все мы нервные зависит от внешних факторов и той тонкой грани, которая у каждого своя. Еще кстати вот ты опять же говоришь иностранная сущность которая лучше подчеркивает явление, а вот смотри комухтер слово появилось у англосаксов и они его назвали своим скрепным вычислитель, а у нас получается наше слово не отражает сущности или не выделяет, так почему у них выделяет?
Просрацiя…
Безумно ирритирует)
Едрить тебя покорëжило. Ну, меня английские заимствования и прямые предложения на английском не корëжат или корëжат по минимуму. Для меня куда большая жопа — это московский акцент со всеми этими его «булошными», «курошками», «дьверьми» и т.д. Сюда же и питерский слэнг с его «поребриками» и «парадными»
Хотя ладно, у меня у самого не мегачистое произношение, я живу в регионе, граничащем с Украиной, и немного не так произношу «г», потому что тут так говорят все
В 99м году вышла книга программист-прагматик, где авторы всю книгу говорят как раз об этом. Когда у тебя в голове прочно оседает эта мысль и ты через ее призму начинаешь смотреть на разработку — то код автоматически лучше становится. Никаких больше книг по чистому коду не нужно. Это вообще мусор, а не книги. Но вот такие базовые знания и умения особо никогда не ценились. На собеседовании важнее знать 10 современных модных практик.
Разработка вообще в конструктор превращается, особенно на джаве. Берешь лего и собираешь из него микросервисы. Код везде типовой. Вот это говно самый первый кандидат на автоматизацию с помощью ИИ. Такого типового кода написано очень много. Разбираться с легаси тоже будет легко какое бы дремучее оно не было, ведь можно ИИ скормить код и задавать ему вопросы по нему, просить что-то поправить, дописать. Но врятли это сделает проще собеседования. На зарплату в 100к промпт-инженером которому нужны лишь базовые знания кодирования будут проводить квалификационный экзамен в 10 уровней. Тенденция пока такая, что разработка становится все проще, а собеседования все сложнее.
> врятли это сделает проще собеседования.
не согласен.
1) смотря для кого проще (упущение субъекта — стандартная ошибка технарей).
2) собесы тоже будет проводить ИИ. хехе.
Сейчас скажу кощунственную вещь.
Если требования могут вот так меняться — то лучше ООП вообще не применять. Ибо ООП хорошо тогда, когда Вы нарисовали вот все эти деревья классов и они не меняются. А если требования заказчика могут меняться на ходу — то процедурное программирование сильно лучше. Ибо добавить в модуль функцию, передать лишний параметр — это всё легко. И уже если только совсем всё засралось тогда сесть и переписать с нуля. Причём и в этом случае переписывать будете процентов на 80 копированием…
В этом и есть проблема. Функции быстрее реализовать и вот все и готово. Но потом могут быть проблемы с поддержкой.
Класс или сущность, как правило, не меняется. Сущности отражают вообще смысл того, что надо сделать. И гораздо проще модифицировать интерфейс/метод, чем ползать по простыням функций.
Но вот текущей ситуации я бы скорее всего бы забил на проектирование вообще. Точнее прямо бы предложил 2 варианта: правильный и быстрый. И пусть заказчик работы сам решает, что ему нужнее. Ибо жопа на рынке.
P. S. Отвечу тут на твой коммент из предыдущего поста. Я уважаю твой подход и рад, что все сложилось у тебя хорошо. Правда. Битрикс и 1С сейчас рулят. Но я говорил про то, что разные ситуации у всех, жизнь многогранна и непредсказуема. Например, а если тебя прорвало канализацию, смог бы ты отдохнуть между теми «вахтами»? Или еще чего бы произошло. То-то и оно.
/* точнее прямо бы предложил 2 варианта: правильный и быстрый. И пусть заказчик работы сам решает, что ему нужнее. */
И он ответит : «Я плАчу чтобы мне сделали быстро, правильно и хорошо. Вы говорите что так не может быть ? Да Вы просто не умеете готовить ! 🙂 Найму ка я того кто умеет». Может быть вслух не скажет, но подумает и сделает.
p.s. Ибо если бы он понимал что так невозможно — то и вопроса бы такого не было. Он бы сам сразу сказал что ему надо.
О чём я когда-то и говорил. Практика показывает, что один хрен всё придётся ломать и переписывать — что с наоверинжиниренными паттернами, что врукопашку наговнокоженное. Поэтому проще написать по принципу 80/20 сильно не заморачиваясь. Так чтобы и не говнокод в 100500 строк в одном методе, но и без трёхэтажных абстракций.
Интересно, когда люди в индустрии это все поймут наконец и весь этот маразм с дрочью на solid закончится?…
Сейчас дрочь скорее не на солид, а на кубики в конструкторе. Из множества библиотек, фреймворков и других инструментов нужно выбрать «правильные» и суметь интегрировать. Солид был актуальнее когда такого количества инструментов еще не было, а сейчас не до него. Кстати говоря, если задуматься — разработка сейчас ведется постоянным гуглением готовых решений на все случаи жизни. Чистого кодинга все меньше и меньше. Считаю это еще один аргумент в пользу того что ИИ забустит работу типичной кодомакаки на 1000%, а опытного сеньора еще больше. Ведь решения везде типовые и распространяются копипастой. Кодирование уже сейчас обесценилось. Никому неинтересны навыки кодирования. Важнее знание актуальных фреймворков и библиотек. Стало понятно что любая обезьяна может освоить кодирование.
Уже давно было можно понять, что вот эти безапелляционные разговоры про рахитектурку и по фабрике на каждый чих — это для того, чтобы у господина сеньора из секты банды четырёх не было проблем с job security, а у тебя были.
Так что, тигр, хочешь, чтобы тебя не уволили или уволив, пожалели об этом — наверни либо побольше (но тогда тебя обойдут уёбки с хабра, задрочившие банду четырёх, если ты не понаделал паттернов имени себя), либо поменьше рахитектуры в неожиданных местах.
Кстати, с job security очень помогает и раздувание workflow — чем больше нюансов, которые могут остановить твой код на review, тем меньше шанса, что ты хоть как-то подвинешь кого-то из старожилов. Они-то читают читабельный для них код, а ты пишешь нечитабельный для себя.
Я писал статью почти по этой же теме, близко: дружба с кодом, там правда речь не про архитектуру, а про то, что реальная ценность кода определяется не задротской теорией, а той выгодой, которую код приносит. Так, пишу для ознакомления теми, кто не читал.
Вот-вот.
Выше написал.
Сейчас правильный подход становится неэффективным. Вообще неэффективным по параметру отношения трудозатрат, включая образование, к компенсации.
По моему опыту бизнес почти всегда выбирает быстрый вариант. И также почти всегда хочет и дальше развивать продукт на той базе, которая реализована по быстрому варианту. Но невозможно вырастить огурец весом 500 кг как невозможно бесконечно развивать систему, которая изначально проектировалась под какие-то узкие задачи. Рано или поздно приходим к тому, что для наворачивания нового функционала нужно практически с нуля переписывать уже существующий функционал. А это не нравится ни заказчику, ни всякому менеджменту, который сначала хотел сэкономить копейки на проектировании, и теперь вынужден топить печку деньгами ради того, чтобы через год получить то же самое, что есть сейчас. А виноваты, как всегда, архитектор, аналитик и программист.
Ну и пусть выбирают быстрый вариант. Мне, если честно, насрать, что там будет с их бизнесом через 10 лет.
Но! Я, как специалист, обязан четко озвучить недостатки и преимущества подходов. Это надо зафиксировать.
Вот подтверждают, что делаем без разработки архитектуры и быстро, ну и хорошо.
Вообще надо четко разделять ответственность. Тебя не должен беспокоить их бизнес, а только конкретная задача. Или пусть ставят задачу — сделать глубокий анализ бизнес-процессов и разработать архитектуру системы.
Согласен со всеми. Те же автомобили давно уже не стесняются делать из говна и веток, а от термина планируемое устаревание уже давно никто не падает в обморок. И только программисты, окрыленные синдромом самозванца, считают, что необходимо еще немного подучить, чтобы код выглядел идеалом (которого, как известно, достичь невозможно). Считайте, что мы делаем не говнокод, а отличный код с запланированным устареванием, или это только в одну сторону должно работать?
Подход должен быть классический:
— Чтоб не было пиздежу, делай все по чертежу.
— Начинается пиздеж, предьявляется чертеж!
Излишняя инициативная «честность» по расписыванию преимуществ и недостатков в большинстве случаев ударит отдачей по самому инициатору.
Не подумай, что я делаю какие-то безапелляционные заявления, просто решил поделиться своим опытом и болью.
Именно этим и приходится заниматься, но у меня самого горит от того, что аргументы игнорируются, а решения принимают либо люди далёкие от ойти, либо мэнэджэры, которые ждут премию за реализацию функционала.
На бизнес наплевать, но из-за такого подхода к работе хорошие проекты превращаются в кучу дерьма, потогонки и дальнейшее участие в викторинах. А анализ и выявление требований и рисование солюшенов — это то, чем я занимаюсь в ойти
Да я вообще перфекционист.
Но что поделать? Нафиг доказывать кому-то, что так лучше не делать?
Доказывать не надо, надо четко это донести, а потом уж пусть сами.
Ты же вот озвучил риски, но чьи это риски? Не твои же, верно?
Я именно про то, что риски надо зафиксировать и объяснить, но окончательное решение не за тобой.
Мы не можем нести ответственность за весь мир.
У бизнеса айти всегда будут виноваты. Потому что бизнес собаку съел на умение вести переговоры, писать служебки и. т д. В то время как мы днями ищем где у говнокоде утечка ресурсов они могут днями составлять руководству отчеты красивые — на которых у нас просто нет ни времени ни сил.
В реальной жизни эту задачу ставят какой-то «сторонней» компании — которой платят за «анализ» 50 миллионов — в итоге «посторонняя» компания приносит отчет (скопипащенный с десятка других отчетов) а потом предлагают тебе сделать все это самому — за премии (читай — крошки с их стола) — и ты сидишь, как мудак, пытаешься пропарсить древник БД и разложить в более-менее адекватные сущности.
В реальной жизни эту задачу ставят какой-то «сторонней» компании — которой платят за «анализ» 50 миллионов — в итоге «посторонняя» компания приносит отчет (скопипащенный с десятка других отчетов) а потом предлагают тебе сделать все это самому — за премии (читай — крошки с их стола) — и ты сидишь, как мудак, пытаешься пропарсить древник БД и разложить в более-менее адекватные сущности.
Получая значок «погромист-двигун».
Тут нет цугцванга. Просто нерешаемая задача. Видеть будущее никто не умеет. Заранее придумать абстракцию нормальную невозможно. Так в принципе люди нигде не умеют. Короткий и простой код легче понимать и переделывать. Вот так и надо писать. Разговор о том, что он потом превратится в лапшу, это лукавство. Код с бразилионом абстракций точно также легко превращается в лапшу. Особенно легко, если эти абстракции неудачно выбраны, и их приходится «хакать».
Хабр позиционирует себя как демократический ресурс, где у участников есть право голоса, а значит и влияние.
Из правил хабра:
Карма — это ключевой инструмент внутрисайтового механизма коллективной модерации, позволяющий полноправным участникам сообщества наделять других участников сообщества правами, или, наоборот, ограничивать их полномочия, путём коллективного голосования. … достигнув показателя кармы в +100500 единиц, можно потерять их все, дискредитировав себя в глазах сообщества, разместив лишь один неуместный комментарий.
при понижении кармы до −11 пользователь имеет право писать лишь 1 комментарий в день.
https://хабр.com/ru/docs/help/karma/
В действительности подобный порядок не что иное как охлократия, власть толпы, черни.
О. впервые описал Аристотель как форму демократии, при которой решающее значение имеют постановления нар. собрания, а не закон. В этом случае народ, по Аристотелю, становится деспотом, и такой демократич. строй напоминает тиранию, т. к. и крайняя демократия, и тирания поступают деспотически с «лучшими гражданами». Там, где верховная власть основана не на законах, полагал он, появляются демагоги, управляющие мнением народа, формирующие его представления и натравливающие массу на должностных лиц.
https://old.bigenc.ru/world_history/text/2699954
Пример:
Автор сайта
https://хабр.com/ru/users/filivanov/comments/page1/
оставил вопрошающий комментарий из 9 букв, в результате комментарий получил 37 минусов, а карму опустили с 0 до -22.
При этом никаких пояснений, ни критики, ни объясняющих комментариев никто не оставил.
Обращение к читателям сайта:
Просьба поднять, у кого есть аккаунт на хабре, карму автору сайта, чтобы была возможность писать больше комментариев.
Вопрос читателям сайта:
Является ли система голосования и кармы на хабре нечестной, тогда какие дополнения в правилах были бы справедливы?
Или система справедливая, просто ментальность членов айти-сообщества еще не дозрела до демократии?
Можно один раз сбросить карму. Но лучше предварительно дождаться пока все просрутся.
Да зачем мне эта карма и этот хабр, я там уже с десяток аккаунтов потерял)) как и многие тут.
Можно хотя бы терять в два раза медленнее. Просвятительская работа увы неблагодарный труд.
Нахрена вам на Хабре с кем то спорить? Особенно в темах с политсрачем?
Если уж что то постить на Хабре, то только для самопиара и продвижения своего бренда (если он есть). Всё остальное — пустая трата времени. Там слишком специфичный контингент для нормального общения.
Telegram-канала, например =3 Серьёзно, статьи, написанные тупа ради рекламы Telegram-канала — это уже эпидемия. Но да, Хабр действительно может дать нехилый такой охват. Круче, наверное, только Тик-Ток даст
«Личный бренд айтишника» — это точно такое же инфоцыганство как всякие «марафоны желаний» для создания иллюзии ойти-задротства и заработка на вкатышах. Поток вкатышей не иссякнет в ближайшей перспективе, слишком уж хорошо работает ойти-пропаганда.
Авторы «личного бренда айтишника» непомерно раздувают ЧСВ как тру ойтишников, так и вкатышей, оправдывают собеседования-викторины и враньё в резюме. При этом сами уже либо не работают в ойти, либо готовятся встать на лыжи.
Шваброй же, как и любым другим информационным ресурсом (теми же каналами авторов «личного бренда айтишника»), пользоваться можно и нужно, но делать это максимально критически. Просветительской деятельностью там заниматься я бы точно не стал, не в коня корм.
Личный бренд это путь к своему микробизнесу, но я плохо представляю что это в рамках айти кроме как развод доверчивых вкатышей.
Личный бренд никак не избавляет от пятиэтапных алгособесов.
>Является ли система голосования и кармы на хабре нечестной, тогда какие дополнения в правилах были бы справедливы? Или система справедливая, просто ментальность членов айти-сообщества еще не дозрела до демократии?
Принес старую статью про это оттуда же https://хабр.com/ru/articles/468491/
Видимо ответ да на оба вопроса.
Зачем?
Ответь себе на этот вопрос. Только честно.
Я хабру читаю давно, ибо бывает интересно. Писать статьи туда при такой вот их организации — нафиг надо. Писать комменты? Зачем? Чтобы высказать своё мнение? Кому оно нужно? Всем плевать.
Тебе там не рады. Не надо стучаться в закрытые двери. Забей.
Лучше всего сейчас писать легаси который мало кто разберет и сложно будет поддерживать. Хорошая архитектура = простота изменений = быстрая заменяемость разработчика. Архитекторы нафиг не нужны , а желательно и бизнес аналитикв не должно быть и тестировщиков. Раз экономят на всем нужно быть бутылочным горлышком которого если уволят то все развалится.
Тут есть минусы — все косяки которые нашел бы тестеровщик — на тебе. Необходимость переписывать так как не учел требования которые в норме расписал бы аналитик — не тебе. То что не учел — твой косяк. Не понял куда движется проект — твой косяк.
А уволить — всегда уволят если прям ты им поперек горла встал. Видел случай когда крепкого тимлмлида на котором все держалось уволили так как он в ковид требовал удаленку а руководство было строго против удаленок. Какую-то головную боль это вызвало — но в основном не бизнесу а новым разрабам и поддержке.
Так еще быстрей откиснешь. Конечные потребители инцидентами очень быстро забодают. А если SLA еще есть, то все, труба.
https://t.me/meduzalive/113265
Уверен, все эти люди прошли пятиэтапный собес с алгоритмической секцией, лайв-кодинг секцией, теоретической секцией, вращанием красно-чёрных деревьев и вопросами про солид.
Интересно, на пятиэтапном собесе в какой-нибудь секции был вопрос на знание закона о защите персональных данных применительно к айти?
Почему даже в ООО «Рога и копыта» 10 лет назад, где собес был 15 минут и состоял из нескольких вопросов уровня «ты вообще программировать-то умеешь?» — мне сразу же донесли, что персональные данные типа серии-номера паспорта, номеров других документов, номеров банковских карт и т.п. даже хранить в БД нельзя… Максимум какой-нибудь необратимо зашифрованный токен. Тем более не отдавать в апи наружу в открытом виде.
У них софт-скиллы были лучше!
Этим комментом надо на хабре в парашу макнуть. Там охват выше, как уже сказали.
вот тут вопрос не к вращателям деревьев а к аналитикам которые определяют апи или, на худой конец, к тестировщикам — ну и безопасникам.
С натяжкой — е тимлиду разрабов который не отконсернил таску на эстемэйшен сессии.
Сегодня персональные данные уже совсем не персональные.
Потому что плюс-минус тогда вокруг этого закона была сильная шумиха, а у рогов и копыт не было ни подвязок у силовиков, ни денег на штраф.
Нет. И без закона понятно что хранить такую информацию в базе ни к чему. Для сравнения достаточно хешей, как с паролями.
Просто тогда работали профессионалы. А сейчас специалисты по прохождению собесов.
А как ты копию договора распечатаешь, откуда ФИО возьмешь?
Тут либо хранить в зашифрованном виде извлекая.шифруя при чтении-записи. Либо строго не выводить апи наружу и следить за БД.
Вообще, я заметил, что код опенсурсных проектов обычно в целом организованнее и читабельнее, чем код закрытых проприетарных сервисов. Я думаю, это связано с тем, что когда ты выставляешь своё детище на публику и захочешь, чтобы тебе контрибутили, то не захочешь сильно позориться и писать слишком уж плохо или, наоборот, чересчур вычурно. А в коммерческих проектах есть сроки, мэнэджмент, желание обеспечить работников обеспечить себе job security и всё такое
Предположу что причина в другом. Тот опенсорц, что востребован, обычно очень сильно переиспользуется. В кусок кода, который переиспользуется, вносить изменения дорого и рискованно (ломается совместимость, возникают регрессии, проект теряет свою аудиторию). Приходится подходить к дизайну и архитектуре максимально взвешенно.
Коммерческие проекты — другая тема: чаще всего они делаются под конкретного пользователя. Большая часть кода таких проектов закрыта и нигде не переиспользуется. Код который не переиспользуется, править проще, поэтому можно и порезать косты на этом. До определенного момента…
Чем дальше тем больше в сфере разных клоунов вкатунов и людей без образования. Эти люди считают что архетуктура для лохов, сбор требований и ТЗ можно скипать. Щас спринты разобьём и каааак… обосремся
«Поддерживаемость» — слово без базы. Мало кто вкладывает какой то обьективный смысл в него: в основном термин максимально субьективен и употребляется либо чтобы придать вес какому то посредственному решению, либо как защита какого то сложившегося местечкового карго-культа. Предтечи времен кобола-алгола и прочих фортранопаскалей еще как будто как то пытались (судя по литературе предков) в обьективность — придумали cohesion и coupling, пытались их оценивать метриками… Современниками эта база утеряна нахрен. Пережеванный Мартином SOLID оброс трактовками и иносказаниями и перевран сектантами тыщу раз, как библия. Паттерны — крайне местечковая вещь и существует лишь в рамках конкретных фреймворка/языка/парадигмы. Итого остаются лишь местечковые истории успеха (типа микросервисов) и карго-культы вокруг них. Что еще есть? Всякие лозунги типа KISS/DRY (делайте хорошо, а плохо не делайте). Игла фреймворка. Ну или цинизм и нигилизм, судя по постам.
Мой персональный фаворит по сабжу, к которому я в конечном итоге пришел — distance from main sequence. Простецкая закономерность, с помощью которой можно быстро проверить, где абстракция нужна, а где лучше не упарываться.
Иииии я учил не пойми что, что группа челов придумала по приколу в переписке. Ииииии люди дрочат этим друг друга на собесах, а потом создают иерархии абстрактных фабрик, в которых чёрт ногу сломит. Ииииии у нас до сих нет доказательств, что Роберт Мартин работал на реальных проектах
По-моему, сейчас во всём этом начали сомневаться сильнее. Во-первых, в IT-индустрии кризис и сокращения. А раньше разрабы МБ мыслили: «SOLID? Ок, будет вам SOLID. Да что угодно будет. Хоть в жопу дам, хоть мать продам. Только деньги платите». А теперь этого нет. Кроме того, успело накопиться большое количество легаси с абстрактными фабриками, порождающими абстрактные фабрики, от которого волосы встают дыбом. Самый главный недостаток такого подхода — необходимость при добавлении какой-то одной фигни сделать изменения одновременно в 10-и местах на разных уровнях. А ещё весь этот дроч на переиспользование. Серьёзно, кто-то вообще умудрялся переиспользовать код бизнес-логики? Переиспользуется только технический код фрэймворков и библиотек, который уже был вынесен заранее кем-то другим
Про это бы статью… Бомба же)