В большинстве фреймворков у вас есть классы моделей, которые представляют строки в базе данных.
Например, php-код:
class User extends Model {}
Я приведу красноречивый пример Laravel, но это правдадля большинства php-фреймворков.
Затем вы добавляете отношения в классе:
public function pictures()
{
return $this->hasMany('App\Picture');
}
Затем вы добавляете несколько методов, подобных этому:
public function deleteComments()
{
// delete comments code here
}
Мой первый вопросЭто хорошая архитектура дизайна, потому что после нескольких лет, когда проект станет большим, у вас будет много связей (фотографии, комментарии, публикации, подписки и т. Д., Связанные с пользователем).Класс может превратиться в 10 тысяч строк кода или около того.
В этом случае класс станет очень большим и сложным в обслуживании.Также может быть нарушен Единый ответственный принцип, потому что у вас слишком много методов в одном классе.
Также, если я хочу использовать класс, то это невозможно в другом приложении, просто потому, что мне придется также тянуть картинки, комментарии и т. д. во втором приложении (веб-сайте).
Если я создам другие классы, такие как "UserPictures
", "UserPictureDeleter
", код станет более сложным.
Так жеэто хорошая практика, и если нет, у вас есть какие-либо предложения о том, как сделать код не раздутым с таким количеством методов, но простым в использовании.Согласны ли вы с тем, что все эти методы относятся к классу User
?