Есть ряд причин, но мне нравится подход, использованный многими ранними программами UNIX: хорошо делать одну вещь. Это достаточно сложно сделать с одной вещью, и чем больше вы пытаетесь сделать, тем труднее.
Другой причиной является ограничение и контроль побочных эффектов. Мне понравилась моя комбинация открывания двери кофеварки. К сожалению, кофе обычно переполнялся, когда у меня были посетители. Я забыл закрыть дверь после того, как я сделал кофе на днях, и кто-то украл его.
С психологической точки зрения вы можете отслеживать только несколько вещей одновременно. Общие оценки - семь плюс или минус два. Если класс делает несколько вещей, вам нужно отслеживать их все одновременно. Это снижает вашу способность отслеживать, что вы делаете. Если класс делает три вещи, и вы хотите только одну из них, вы можете исчерпать свою способность отслеживать вещи, прежде чем вы действительно что-то сделаете с классом.
Выполнение нескольких вещей увеличивает сложность кода. Помимо самого простого кода, увеличение сложности увеличивает вероятность ошибок. С этой точки зрения вы хотите, чтобы классы были максимально простыми.
Тестирование класса, который делает одну вещь, намного проще. Вам не нужно проверять, что второе действие класса выполнялось или не происходило для каждого теста. Вам также не нужно исправлять нарушенные условия и проводить повторную проверку, если один из этих тестов не пройден.