ОглавлениеПринцип единственной обязанности.
Более подробноНа каждый класс должна быть возложена одна-единственная обязанность.
Простыми словами. Посмотрите на картинку:
На первый взгляд этот ножик очень удобен. Все в нем есть. Но вот нож ли это? Может это ножницы, не понятно, что первично.
А теперь попробуйте заставить ими парикмахера кого-нибудь постричь. Он вас пошлет в эротическое путешествие.
Так вот, принцип единственной обязанности гласит, что если это ножницы, то это ножницы. И нечего их приспосабливать к распиловке дров.
Пример кода. Явное нарушение принципа:
class claspКnife
{
public function cutВread()
{
echo 'Я умею резать хлеб<br>';
}
public function sawWood()
{
echo 'Я умею пилить дрова<br>';
}
}
$knife = new claspКnife();
$knife->cutВread();
$knife->sawWood();
И всё по правилам:
class claspКnife
{
public function cutВread()
{
echo 'Я умею резать хлеб<br>';
}
public function openСanned()
{
echo 'Я умею открывать консервы<br>';
}
}
$knife = new claspКnife();
$knife->cutВread();
$knife->openСanned();
Вообще говорят, что нужно придерживаться принципа "дели, пока делится". Но разумный предел тоже нужен. Я не зря класс обозвал claspКnife (складной нож). Если был бы просто Кnife, то открывашка была бы неуместна. Но если нам нужен именно складишок для пикника на троих, самое оно. А плоскогубцы, ножницы и пилка для ногтей, это другие обязанности.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.