Рубрики
Реалии

Размышления о практиках хорошей архитектуры

Все практики хорошей архитектуры базируются на идее того, что требования будут меняться — и именно чтобы облегчить последующую поддержку — мы добавляем абстракции, паттерны, следуем SOLID-у и вот это вот все. Это, кстати, делает проектирование ПО очень сильно отличающимся от других видов разработки. Например, при проектировании моста никому в голову не придет на середине строительства превращать подвесной мост в разводной — а при разработке ПО считается, что проектировать надо так чтобы в любой момент любой слой можно было заменить безболезненно — переходя от реляционной БД к документно-ориентированной и обратно.

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

Представим себе молодого или не очень разработчика с несложной задачей — написать сервис который что-то получает по http, как-то элементарно меняет и отдает это в кафку (ETL-сервис). Если использовать высокоуровневые фреймворки — то код который все это выполняет уместится в 10 строк (не считая конфига). Но наш разработчик знает что должен быть слой контроллеров и слой сервисов. Далее, он задумывается — “что если завтра надо будет слать не в кафку в еще куда-то” — и делает абстрактный сендер с реализацией кафка сендер. А что если слать надо будет в разные топики — в зависимости от тела запроса? И он делает абстрактный тополоджиРесолвер с единственной реализацией — конкретным топиком. И, кстати, делает абстрактный бодиКонвертер — вдруг завтра поменяется формат передаваемых данных, абстрактный же мессаджКонвертр — вдруг завтра надо будет слать сообщения в другом формате.. Наконец. добавляет абстракцию фильтров, обработчиков ошибок отправки, обработчиков успешной отправки, слой репозитария (с пустой реализацией)… и гордо выставляет это на прод.
Проходит полгода — приходит молодой сотрудник которому он передает код. И молодой сотрудник видит семь абстрактных классов и две абстрактные фабрики — с пустыми реализациями. И у него возникает сложнопреодалимое желание запихнуть в жопу предшественнику всю банду четырех — вместе с Мартинами (Фаулером и Робином) в придачу.

Но возможна и другая ситуация — первый разработчик не заморачивается абстракциями — а фигачит все в контроллере — один метод на который мапится POST-запрос — в нем и преобразование данных и отправка в кафку. Но — проходит месяц и его просят добавить фильтр, слать не только в кафку но и писать в базу, при ошибке отправлять емэйл — в итоге он по чуть-чуть “дописывает” свой код — превращая его в макарону. Проходит пол года — он передает код другому сотруднику — тот видит макаронину кода и исполняется желанием запихнуть в жопу предшественнику всю банду четырех…

Есть еще вариант найти “почти готовое решение” для задачи — типа апач кэмела, спринг интегрешенала или кафкаконнекта — в которых “все работает из коробки” и задачку “переслать POST-запрос в кафку” можно сделать вообще без кода . Но пройдет пол года, сервис передадут другому человеку, его потребуется доработать — что потребует уже чуть более глубокое знание этих фреймворков — и поддерживающий будет думать — какого хрена здесь этот фреймворк вместо того чтобы самому написать 30 строк тривиального кода — разбирайся теперь с ним, да еще и обновляй до последней версии…
Я успел побывать во всех ролях — и передавал код-макаронину, и передавал равиоли-код с кучей абстракцией. И брал в поддержку код с безумным количеством слоев и брал в поддержку код с методами на 7000 строк делающими все что можно.

Очень редко но бывало и так что абстракция прям “подошла” когда для запуска сервиса с новыми требованиями хватило лишь добавить новую реализацию — но, увы, это редкость.
Вывод из этого только один — принять как должное, что предугадать в каком направлении будет меняться проект — практически не реально. И если “не угадали” — не испытывать комплекс самозванца. Относиться к “гибкой архитектуре” и “бест практикс” с уважением — но без фанатизма — не ленясь разбивать код по слоям и сервисам — но только тогда когда это действительно нужно — а не городя фасад абстрактных генераторов в трех строчках кода.

61 ответ к “Размышления о практиках хорошей архитектуры”

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

22
0

Судя по тенденциям с работой и зарплатами

С такими зарплатами никто об архитектуре и думать не будет.
Разве что молодой специалист, которому вся эта возня с технологиями интересна.
Хотя он может наваять такого, что это потом 3 года разбирать будут.

4
0

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

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

1
0

От этой статьи у меня случился приступ ПТСР. Довольно весело, я kind of успел повидать всё из перечисленного

7
1

я kind of успел повидать

Ты из лгбт чтоли? Не можешь как нормальные люди писать?

22
12

Открой любую книгу из классической литературы и ты удивишься, как много там иностранных слов.
Хотя бы ту же «Войну и мир». Там полно французского.
Почему так происходит? Потому что некоторые слова на конкретном языке более точно передают смысл образа и мысли, которые хочет донести автор. И использование иностранных слов только лишь показывает кругозор и образованность автора.
Более того, есть такое понятие, как заимствование — это когда в один язык проникают слова из другого языка. И это абсолютно нормально (без фанатизма, конечно).
Единственное, что мне не нравится — это когда пишут иностранное слово, базирующееся на латинице, — кириллицей.

9
11

А слово юзать вместо использовать не раздражает?

0
0

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

0
0

по мне так слово фрустрация вносит неясность и по мне так уступает нашему скрепному варианту

Просрацiя…

1
0

Едрить тебя покорëжило. Ну, меня английские заимствования и прямые предложения на английском не корëжат или корëжат по минимуму. Для меня куда большая жопа — это московский акцент со всеми этими его «булошными», «курошками», «дьверьми» и т.д. Сюда же и питерский слэнг с его «поребриками» и «парадными»

Хотя ладно, у меня у самого не мегачистое произношение, я живу в регионе, граничащем с Украиной, и немного не так произношу «г», потому что тут так говорят все

1
5

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

В 99м году вышла книга программист-прагматик, где авторы всю книгу говорят как раз об этом. Когда у тебя в голове прочно оседает эта мысль и ты через ее призму начинаешь смотреть на разработку — то код автоматически лучше становится. Никаких больше книг по чистому коду не нужно. Это вообще мусор, а не книги. Но вот такие базовые знания и умения особо никогда не ценились. На собеседовании важнее знать 10 современных модных практик.

Разработка вообще в конструктор превращается, особенно на джаве. Берешь лего и собираешь из него микросервисы. Код везде типовой. Вот это говно самый первый кандидат на автоматизацию с помощью ИИ. Такого типового кода написано очень много. Разбираться с легаси тоже будет легко какое бы дремучее оно не было, ведь можно ИИ скормить код и задавать ему вопросы по нему, просить что-то поправить, дописать. Но врятли это сделает проще собеседования. На зарплату в 100к промпт-инженером которому нужны лишь базовые знания кодирования будут проводить квалификационный экзамен в 10 уровней. Тенденция пока такая, что разработка становится все проще, а собеседования все сложнее.

11
1

> врятли это сделает проще собеседования.

не согласен.
1) смотря для кого проще (упущение субъекта — стандартная ошибка технарей).
2) собесы тоже будет проводить ИИ. хехе.

1
0

Сейчас скажу кощунственную вещь.

Если требования могут вот так меняться — то лучше ООП вообще не применять. Ибо ООП хорошо тогда, когда Вы нарисовали вот все эти деревья классов и они не меняются. А если требования заказчика могут меняться на ходу — то процедурное программирование сильно лучше. Ибо добавить в модуль функцию, передать лишний параметр — это всё легко. И уже если только совсем всё засралось тогда сесть и переписать с нуля. Причём и в этом случае переписывать будете процентов на 80 копированием…

5
3

И уже если только совсем всё засралось

В этом и есть проблема. Функции быстрее реализовать и вот все и готово. Но потом могут быть проблемы с поддержкой.
Класс или сущность, как правило, не меняется. Сущности отражают вообще смысл того, что надо сделать. И гораздо проще модифицировать интерфейс/метод, чем ползать по простыням функций.

Но вот текущей ситуации я бы скорее всего бы забил на проектирование вообще. Точнее прямо бы предложил 2 варианта: правильный и быстрый. И пусть заказчик работы сам решает, что ему нужнее. Ибо жопа на рынке.

P. S. Отвечу тут на твой коммент из предыдущего поста. Я уважаю твой подход и рад, что все сложилось у тебя хорошо. Правда. Битрикс и 1С сейчас рулят. Но я говорил про то, что разные ситуации у всех, жизнь многогранна и непредсказуема. Например, а если тебя прорвало канализацию, смог бы ты отдохнуть между теми «вахтами»? Или еще чего бы произошло. То-то и оно.

0
0

/* точнее прямо бы предложил 2 варианта: правильный и быстрый. И пусть заказчик работы сам решает, что ему нужнее. */

И он ответит : «Я плАчу чтобы мне сделали быстро, правильно и хорошо. Вы говорите что так не может быть ? Да Вы просто не умеете готовить ! 🙂 Найму ка я того кто умеет». Может быть вслух не скажет, но подумает и сделает.

p.s. Ибо если бы он понимал что так невозможно — то и вопроса бы такого не было. Он бы сам сразу сказал что ему надо.

2
0

Очень редко но бывало и так что абстракция прям “подошла” когда для запуска сервиса с новыми требованиями хватило лишь добавить новую реализацию — но, увы, это редкость.

О чём я когда-то и говорил. Практика показывает, что один хрен всё придётся ломать и переписывать — что с наоверинжиниренными паттернами, что врукопашку наговнокоженное. Поэтому проще написать по принципу 80/20 сильно не заморачиваясь. Так чтобы и не говнокод в 100500 строк в одном методе, но и без трёхэтажных абстракций.

6
0

Интересно, когда люди в индустрии это все поймут наконец и весь этот маразм с дрочью на solid закончится?…

4
0

Сейчас дрочь скорее не на солид, а на кубики в конструкторе. Из множества библиотек, фреймворков и других инструментов нужно выбрать «правильные» и суметь интегрировать. Солид был актуальнее когда такого количества инструментов еще не было, а сейчас не до него. Кстати говоря, если задуматься — разработка сейчас ведется постоянным гуглением готовых решений на все случаи жизни. Чистого кодинга все меньше и меньше. Считаю это еще один аргумент в пользу того что ИИ забустит работу типичной кодомакаки на 1000%, а опытного сеньора еще больше. Ведь решения везде типовые и распространяются копипастой. Кодирование уже сейчас обесценилось. Никому неинтересны навыки кодирования. Важнее знание актуальных фреймворков и библиотек. Стало понятно что любая обезьяна может освоить кодирование.

2
1

Уже давно было можно понять, что вот эти безапелляционные разговоры про рахитектурку и по фабрике на каждый чих — это для того, чтобы у господина сеньора из секты банды четырёх не было проблем с job security, а у тебя были.

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

Кстати, с job security очень помогает и раздувание workflow — чем больше нюансов, которые могут остановить твой код на review, тем меньше шанса, что ты хоть как-то подвинешь кого-то из старожилов. Они-то читают читабельный для них код, а ты пишешь нечитабельный для себя.

8
0

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

2
0

Вот-вот.

Но вот текущей ситуации я бы скорее всего бы забил на проектирование вообще. Точнее прямо бы предложил 2 варианта: правильный и быстрый. И пусть заказчик работы сам решает, что ему нужнее. Ибо жопа на рынке.

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

4
0

По моему опыту бизнес почти всегда выбирает быстрый вариант. И также почти всегда хочет и дальше развивать продукт на той базе, которая реализована по быстрому варианту. Но невозможно вырастить огурец весом 500 кг как невозможно бесконечно развивать систему, которая изначально проектировалась под какие-то узкие задачи. Рано или поздно приходим к тому, что для наворачивания нового функционала нужно практически с нуля переписывать уже существующий функционал. А это не нравится ни заказчику, ни всякому менеджменту, который сначала хотел сэкономить копейки на проектировании, и теперь вынужден топить печку деньгами ради того, чтобы через год получить то же самое, что есть сейчас. А виноваты, как всегда, архитектор, аналитик и программист.

7
0

Ну и пусть выбирают быстрый вариант. Мне, если честно, насрать, что там будет с их бизнесом через 10 лет.
Но! Я, как специалист, обязан четко озвучить недостатки и преимущества подходов. Это надо зафиксировать.
Вот подтверждают, что делаем без разработки архитектуры и быстро, ну и хорошо.

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

4
0

Согласен со всеми. Те же автомобили давно уже не стесняются делать из говна и веток, а от термина планируемое устаревание уже давно никто не падает в обморок. И только программисты, окрыленные синдромом самозванца, считают, что необходимо еще немного подучить, чтобы код выглядел идеалом (которого, как известно, достичь невозможно). Считайте, что мы делаем не говнокод, а отличный код с запланированным устареванием, или это только в одну сторону должно работать?

Подход должен быть классический:
— Чтоб не было пиздежу, делай все по чертежу.
— Начинается пиздеж, предьявляется чертеж!

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

5
1

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

Но! Я, как специалист, обязан четко озвучить недостатки и преимущества подходов. Это надо зафиксировать.

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

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

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

1
0

Да я вообще перфекционист.
Но что поделать? Нафиг доказывать кому-то, что так лучше не делать?
Доказывать не надо, надо четко это донести, а потом уж пусть сами.
Ты же вот озвучил риски, но чьи это риски? Не твои же, верно?
Я именно про то, что риски надо зафиксировать и объяснить, но окончательное решение не за тобой.

Мы не можем нести ответственность за весь мир.

2
0

Ты же вот озвучил риски, но чьи это риски? Не твои же, верно?

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

3
0

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

В реальной жизни эту задачу ставят какой-то «сторонней» компании — которой платят за «анализ» 50 миллионов — в итоге «посторонняя» компания приносит отчет (скопипащенный с десятка других отчетов) а потом предлагают тебе сделать все это самому — за премии (читай — крошки с их стола) — и ты сидишь, как мудак, пытаешься пропарсить древник БД и разложить в более-менее адекватные сущности.

0
0

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

В реальной жизни эту задачу ставят какой-то «сторонней» компании — которой платят за «анализ» 50 миллионов — в итоге «посторонняя» компания приносит отчет (скопипащенный с десятка других отчетов) а потом предлагают тебе сделать все это самому — за премии (читай — крошки с их стола) — и ты сидишь, как мудак, пытаешься пропарсить древник БД и разложить в более-менее адекватные сущности.

0
0

Тут нет цугцванга. Просто нерешаемая задача. Видеть будущее никто не умеет. Заранее придумать абстракцию нормальную невозможно. Так в принципе люди нигде не умеют. Короткий и простой код легче понимать и переделывать. Вот так и надо писать. Разговор о том, что он потом превратится в лапшу, это лукавство. Код с бразилионом абстракций точно также легко превращается в лапшу. Особенно легко, если эти абстракции неудачно выбраны, и их приходится «хакать».

8
0

Хабр позиционирует себя как демократический ресурс, где у участников есть право голоса, а значит и влияние.
Из правил хабра:
Карма — это ключевой инструмент внутрисайтового механизма коллективной модерации, позволяющий полноправным участникам сообщества наделять других участников сообщества правами, или, наоборот, ограничивать их полномочия, путём коллективного голосования. … достигнув показателя кармы в +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.
При этом никаких пояснений, ни критики, ни объясняющих комментариев никто не оставил.

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

Вопрос читателям сайта:
Является ли система голосования и кармы на хабре нечестной, тогда какие дополнения в правилах были бы справедливы?
Или система справедливая, просто ментальность членов айти-сообщества еще не дозрела до демократии?

0
0

Можно один раз сбросить карму. Но лучше предварительно дождаться пока все просрутся.

0
0

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

1
0

Можно хотя бы терять в два раза медленнее. Просвятительская работа увы неблагодарный труд.

2
0

Нахрена вам на Хабре с кем то спорить? Особенно в темах с политсрачем?

Если уж что то постить на Хабре, то только для самопиара и продвижения своего бренда (если он есть). Всё остальное — пустая трата времени. Там слишком специфичный контингент для нормального общения.

4
0

то только для самопиара и продвижения своего бренда

Telegram-канала, например =3 Серьёзно, статьи, написанные тупа ради рекламы Telegram-канала — это уже эпидемия. Но да, Хабр действительно может дать нехилый такой охват. Круче, наверное, только Тик-Ток даст

1
0

«Личный бренд айтишника» — это точно такое же инфоцыганство как всякие «марафоны желаний» для создания иллюзии ойти-задротства и заработка на вкатышах. Поток вкатышей не иссякнет в ближайшей перспективе, слишком уж хорошо работает ойти-пропаганда.
Авторы «личного бренда айтишника» непомерно раздувают ЧСВ как тру ойтишников, так и вкатышей, оправдывают собеседования-викторины и враньё в резюме. При этом сами уже либо не работают в ойти, либо готовятся встать на лыжи.

Шваброй же, как и любым другим информационным ресурсом (теми же каналами авторов «личного бренда айтишника»), пользоваться можно и нужно, но делать это максимально критически. Просветительской деятельностью там заниматься я бы точно не стал, не в коня корм.

5
0

«Личный бренд айтишника» — это точно такое же инфоцыганство как всякие «марафоны желаний»

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

2
0

Личный бренд никак не избавляет от пятиэтапных алгособесов.

2
0

>Является ли система голосования и кармы на хабре нечестной, тогда какие дополнения в правилах были бы справедливы? Или система справедливая, просто ментальность членов айти-сообщества еще не дозрела до демократии?

Принес старую статью про это оттуда же https://хабр.com/ru/articles/468491/
Видимо ответ да на оба вопроса.

0
0

чтобы была возможность писать больше комментариев

Зачем?

Ответь себе на этот вопрос. Только честно.

Я хабру читаю давно, ибо бывает интересно. Писать статьи туда при такой вот их организации — нафиг надо. Писать комменты? Зачем? Чтобы высказать своё мнение? Кому оно нужно? Всем плевать.

Тебе там не рады. Не надо стучаться в закрытые двери. Забей.

0
0

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

2
1

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

Тут есть минусы — все косяки которые нашел бы тестеровщик — на тебе. Необходимость переписывать так как не учел требования которые в норме расписал бы аналитик — не тебе. То что не учел — твой косяк. Не понял куда движется проект — твой косяк.
А уволить — всегда уволят если прям ты им поперек горла встал. Видел случай когда крепкого тимлмлида на котором все держалось уволили так как он в ковид требовал удаленку а руководство было строго против удаленок. Какую-то головную боль это вызвало — но в основном не бизнесу а новым разрабам и поддержке.

4
0

Так еще быстрей откиснешь. Конечные потребители инцидентами очень быстро забодают. А если SLA еще есть, то все, труба.

0
0
Я вам хорошей архитектуры принёс 8a04e9502e8a04e9502e

https://t.me/meduzalive/113265

Уверен, все эти люди прошли пятиэтапный собес с алгоритмической секцией, лайв-кодинг секцией, теоретической секцией, вращанием красно-чёрных деревьев и вопросами про солид.
Интересно, на пятиэтапном собесе в какой-нибудь секции был вопрос на знание закона о защите персональных данных применительно к айти?
Почему даже в ООО «Рога и копыта» 10 лет назад, где собес был 15 минут и состоял из нескольких вопросов уровня «ты вообще программировать-то умеешь?» — мне сразу же донесли, что персональные данные типа серии-номера паспорта, номеров других документов, номеров банковских карт и т.п. даже хранить в БД нельзя… Максимум какой-нибудь необратимо зашифрованный токен. Тем более не отдавать в апи наружу в открытом виде.

5
1

Уверен, все эти люди прошли пятиэтапный собес с алгоритмической секцией, лайв-кодинг секцией,

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

1
0

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

0
0

Сегодня персональные данные уже совсем не персональные.

2
0

Почему даже в ООО «Рога и копыта» 10 лет назад, где собес был 15 минут и состоял из нескольких вопросов уровня «ты вообще программировать-то умеешь?» — мне сразу же донесли, что персональные данные типа серии-номера паспорта, номеров других документов, номеров банковских карт и т.п. даже хранить в БД нельзя…

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

0
0

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

2
0

И без закона понятно что хранить такую информацию в базе ни к чему. Для сравнения достаточно хешей, как с паролями.

А как ты копию договора распечатаешь, откуда ФИО возьмешь?
Тут либо хранить в зашифрованном виде извлекая.шифруя при чтении-записи. Либо строго не выводить апи наружу и следить за БД.

2
0

Вообще, я заметил, что код опенсурсных проектов обычно в целом организованнее и читабельнее, чем код закрытых проприетарных сервисов. Я думаю, это связано с тем, что когда ты выставляешь своё детище на публику и захочешь, чтобы тебе контрибутили, то не захочешь сильно позориться и писать слишком уж плохо или, наоборот, чересчур вычурно. А в коммерческих проектах есть сроки, мэнэджмент, желание обеспечить работников обеспечить себе job security и всё такое

0
0

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

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

0
0

Чем дальше тем больше в сфере разных клоунов вкатунов и людей без образования. Эти люди считают что архетуктура для лохов, сбор требований и ТЗ можно скипать. Щас спринты разобьём и каааак… обосремся

1
0

«Поддерживаемость» — слово без базы. Мало кто вкладывает какой то обьективный смысл в него: в основном термин максимально субьективен и употребляется либо чтобы придать вес какому то посредственному решению, либо как защита какого то сложившегося местечкового карго-культа. Предтечи времен кобола-алгола и прочих фортранопаскалей еще как будто как то пытались (судя по литературе предков) в обьективность — придумали cohesion и coupling, пытались их оценивать метриками… Современниками эта база утеряна нахрен. Пережеванный Мартином SOLID оброс трактовками и иносказаниями и перевран сектантами тыщу раз, как библия. Паттерны — крайне местечковая вещь и существует лишь в рамках конкретных фреймворка/языка/парадигмы. Итого остаются лишь местечковые истории успеха (типа микросервисов) и карго-культы вокруг них. Что еще есть? Всякие лозунги типа KISS/DRY (делайте хорошо, а плохо не делайте). Игла фреймворка. Ну или цинизм и нигилизм, судя по постам.

Мой персональный фаворит по сабжу, к которому я в конечном итоге пришел — distance from main sequence. Простецкая закономерность, с помощью которой можно быстро проверить, где абстракция нужна, а где лучше не упарываться.

0
0

SOLID возник в 1995 году в переписке https://groups.google.com/g/comp.object/c/WICPDcXAMG8?hl=en&pli=1#adee7e5bd99ab111. Ребята весело проводили время, обсуждая количественный вопрос:

We are trying to compose The Ten Commandments of OO Programming.

Betrand Meyer said somewhere that there are about 20 good ideas in OO, and that is what the language(s) have to support.

Is it possible to boil everything down to 10?

Дескать, 20 хороших идей для ОО это хорошо, но абсолютно не практично — их же ни кто не запомнит. Заповедей должно быть 10! Robert Martin (aka Uncle Bob) тогда всех победил, предложив сначала 11 кандидатов, а потом еще сократив список.

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

Как следует из самой постановки вопроса, за SOLID не было ни какой научной подоплеки. Просто несколько звучных тезисов, выбранных на собственный вкус. Насколько он практичен в области разработки софта, я думаю время уже сто раз показало. =)

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

По-моему, сейчас во всём этом начали сомневаться сильнее. Во-первых, в IT-индустрии кризис и сокращения. А раньше разрабы МБ мыслили: «SOLID? Ок, будет вам SOLID. Да что угодно будет. Хоть в жопу дам, хоть мать продам. Только деньги платите». А теперь этого нет. Кроме того, успело накопиться большое количество легаси с абстрактными фабриками, порождающими абстрактные фабрики, от которого волосы встают дыбом. Самый главный недостаток такого подхода — необходимость при добавлении какой-то одной фигни сделать изменения одновременно в 10-и местах на разных уровнях. А ещё весь этот дроч на переиспользование. Серьёзно, кто-то вообще умудрялся переиспользовать код бизнес-логики? Переиспользуется только технический код фрэймворков и библиотек, который уже был вынесен заранее кем-то другим

1
0

Добавить комментарий

Про ненормативную лексику Комментарии с ненормативной лексикой попадают в лист ожидания. Постарайтесь не использовать ненормативную лексику.
Правила комментирования
  • Любые темы про политику, войны, или всё то, что НЕ относится к теме сайта, будут УДАЛЯТЬСЯ.
  • Всё, что попадает под возможные нарушения законодательства РФ (экстремизм, призывы, дискредитация, оправдание, возбуждение и т.п.) - тоже.
  • Любые бессмысленные оскорбления участников сайта или тематики сайта. Если с чем-то не согласны - приводите аргументацию, а не оскорбления.
  • Запрещается упоминание в негативном контексте (клевета) каких-либо персоналий - физических или юридических лиц.
  • Ссылки на habr.com запрещены по идеологическим мотивам, в случае необходимости размещения ссылки на этот ресурс пишите что-то вроде https://хабр.ком/url
Мы стараемся сделать комментарии ценным информационным материалом, засорять сайт мусорными обсуждениями, никак не относящимися к теме сайта, не нужно! Спасибо за понимание.