Nie wiem czy tego dotyczy pytanie, ale..
Pisząc jakąś nową funkcjonalność - na samym początku - KISS wydaje mi się ważniejsze niż SRP - tzn. jak mam powiedzmy pobrać jedną konkretna informację z jakiegoś datastore to nie robie całej hierarchii klas, interfejsów i całej masy "best practices", tylko próbuje to zamknąć w najmniejszej ilości kodu, jednej klasie/funkcji (zależy od jezyka). Bo wydaje mi się, że może będzie miała ona ciut za dużo odpowiedzialności, ale przynajmniej nie trzeba skakać po jakichś dziwnie nazwanych bytach żeby dowiedzieć się co się tam konkretnie dzieje.
Oczywiście nie pozwalam żeby to się rozrosło i jak tylko zauważam, że będzie się z tego datastore pobierało więcej albo w bardziej złożony sposób to staram się to zrobić już po ludzku, tak żeby to się łatwo rozwijało/utrzymywało.
Czyli w skrócie próbuje unikac overengineeringu :D ale tj. mówie może nie tego dotyczyło pytanie
natomiast co do:
W jakich okolicznościach dłuższy kod bez wydzielonej odpowiedzialności jest waszym zdaniem lepszy
Uważam, że to co opisałem nie jest... lepsze; bardziej bym to nazwał wystarczającym i czytelniejszym. To co jest "lepsze" jest ściśle związany z konkretnym kontekstem