Подумайте о проблеме в первую очередь. Если вы слепо применяете принципы YAGNI или SOLID, вы можете навредить себе позже. Надеюсь, мы все сможем понять, что не существует единого подхода к проектированию, который бы подходил всем проблемам. Вы можете увидеть доказательства этого, когда магазин продает шляпу, рекламируемую как «один размер подходит всем», но она не подходит вашей голове. Он либо слишком большой, либо слишком маленький.
Вместо этого лучше понять принципы и проблемы, которые SOLID пытается решить; а также принципы и проблемы, которые YAGNI пытается решить. Вы обнаружите, что один связан с архитектурой вашего приложения, а другой - с процессом разработки в целом. Хотя в некоторых случаях возможны совпадения, они представляют собой совершенно разные проблемы.
YAGNI («Вам это не нужно» [причудливая американская аббревиатура]) посвящен экономии времени застройщика, добавлению железобетонных фундаментов со стальным восстановленным мостом к мосту, который предназначен только для охвата ручья шириной 3 фута, когда более простой деревянный мост подойдет просто хорошо. Если мы пересекаем реку шириной в милю и нуждаемся в поддержке нескольких тракторных прицепов, конечно, нам понадобятся дополнительные фундаментные работы. По сути, YAGNI предлагает вам взглянуть на более широкую картину и дизайн для текущих потребностей. Он решает проблему создания чего-то слишком сложного, потому что мы предвидим ряд потенциальных потребностей, которые клиент еще не определил.
SOLID заботится о том, чтобы убедиться, что части моста правильно совмещаются и могут поддерживаться в течение долгого времени. Вы можете применять ТВЕРДЫЕ принципы к деревянному мосту, а также к стальному железобетонному мосту.
Короче говоря, эти два понятия не обязательно противоречат друг другу. Когда вы сталкиваетесь с ситуацией, когда вы верите в это, самое время взглянуть на общую картину. В зависимости от вашего заключения, вы можете решить отказаться от части принципов SOLID или решить, что вам это действительно нужно.
SOLID principle vs YAGNI
?