C# - pattern matching - many discards
Новая часть кода сделана по ЧиА, а старая постепенно переносится из дремучего легаси в новую парадигму. Да, получилось много классов, но они маленькие, сконцентрированные на своей задаче, разбитые по слоям. Но в чём проблема?
Проблема в том, что управлять кучей мелкотни, разбросанной по слоям, не особо проще, чем монолитом. Монолит можно весь выбросить и переписать, или хотя бы его большие части. А у мелкотни обвязка по связности между собой зачастую больше самой функциональности, закладываемой в эту мелкотню. Т.е. у нас поддерживающая инфрасруктура больше, чем основное производство. Долго возводим леса, кантуем оснастку вокруг, огораживаем, убивая дни на всё это. А потом приходит Петрович и за одну минуту в нужном месте один раз бьёт кувалдой. После чего всё несколько дней разбираем. Примерная аналогия из строительства.
Вообще, всё это сделано для якобы аджайла и continuous integration. Но зачастую проекты как один раз написаны, так почти без существенных доработок и существуют годами. После чего их в значительной части или полностью переписывают. Раз в 5-10 лет. Получается просто последовательность переписываемых почти-монолитов. И такая модель в некоторых случаях более уместна. Проблема всяких аджайл-фанатиков и прочих солидистов в том, что они пихают своё видение во все щели, даже где оно нафиг не сдалось.
без ЧиА в легаси это большие классы на несколько сотен строк, а в новом коде это много классов до сотни строк каждый
Блин, чел хоть раз открывал исходники больших библиотек? Там некоторые классы на тыщи строк. Вот проще и удобнее в некоторых случаях сделать класс на тыщи строк - его так и делают. А не следуют тупым и слепым догмам "классы должны быть маленькими". В куче связанных мелочей зачастую очень трудно составить весь путь потока информации от скажем нажатия на кнопку до получения результата. Там всё проходит через десять слоёв, 20 классов и пачку конвертаций. Задолбаешься прыгать по этим мелким классам, отслеживая стеки вызовов.