Как вы решаете, когда и как нарушать single responsability principle?Когда нарушать принцип единой ответственности?
Например, скажем, у меня есть сетевая камера со следующим интерфейсом (интерфейс продолжал глупо и «неправильно» для простоты):
class Camera
{
string user();
void set_user(string user);
string password();
void set_password(string password);
string url();
void set_url(string url);
image take_snapshot();
bool reboot();
}
Это выглядит естественно, но это выглядит как класс камеры имеет 3 responsabilties: хранить метаданные, делать снимок, перезагружать. После SRP, вы могли бы написать это следующим образом:
class Camera
{
string user();
void set_user(string user);
string password();
void set_password(string password);
string url();
void set_url(string url);
}
image take_snapshot(camera c);
bool reboot_camera(camera c);
Здесь питания аккуратно разделены по ОБЯЗАННОСТИ, но сейчас он очень похож на C с немыми и функцией структурами ... Возникает вопрос о том, зачем нам ООП в первую очередь.
Как вы балансируете между удобством и SRP?
[EDIT]
@stjin идея была показана в ответ на @John Zwinck
«Когда нарушать принцип единой ответственности?» - редко ... –
* Это выглядит естественным * не совсем: путь к большому количеству получателей/сеттеров:] Возможно, даже если вы это исправите, вам больше не нужно будет задавать этот вопрос. – stijn
@stijn: это пример ... также я не вижу, как вы можете избежать этого в некоторых ситуациях, за исключением случаев, когда вы имеете в виду код в стиле C с немыми структурами и функциями, управляющими ими. – Silex