Причин є ряд, але мені подобається підхід, який застосовується багатьма ранніми програмами UNIX: Робіть одну справу добре. Досить важко це зробити однією справою, і все важче збільшувати, чим більше намагаєшся робити.
Ще одна причина - обмеження та контроль побічних ефектів. Мені сподобалось моє комбіноване відкривання дверей для кави На жаль, кава зазвичай переповнювалась, коли у мене були відвідувачі. Я забув закрити двері після того, як днями випив каву, і хтось її вкрав.
З психологічної точки зору ви можете відстежувати лише кілька речей одночасно. Загальні оцінки - сім плюс-мінус два. Якщо клас робить кілька речей, вам потрібно відслідковувати їх усі одночасно. Це знижує вашу можливість відстежувати, що ви робите. Якщо клас робить три речі, і ви хочете лише одну з них, ви можете вичерпати свої можливості відслідковувати речі, перш ніж ви дійсно щось робите з класом.
Виконання кількох речей збільшує складність коду. Крім найпростішого коду, підвищення складності збільшує ймовірність появи помилок. З цієї точки зору ви хочете, щоб заняття були максимально простими.
Тестування класу, який робить одне, набагато простіше. Вам не доведеться перевіряти, що друге, що робив клас, чи не відбулося для кожного тесту. Вам також не доведеться виправляти порушені умови та повторно протестувати, коли один із цих тестів не працює.