Между вашими решениями сначала лучше, но вы должны изменить названия функций. 'get' следует использовать, только если функция возвращает что-то.
Причина, по которой он лучше, заключается в том, что он не использует побочные эффекты, побочные эффекты всегда плохие, поскольку они невидимы для пользователя класса, но изменяют поведение класса. Поэтому вы должны попытаться свести их к минимуму или сделать их очевидными, как в первом случае, когда они на самом деле не «на стороне».
Но в данном конкретном случае Get_Existing_User
и Add_User
должны быть статическими функциями, которые возвращают новый объект User
, его иногда называют статическим конструктором. Причина, по которой он намного лучше, состоит в том, что он дает понять, что делают эти функции, они получают что-то в качестве параметра (user_id существующего пользователя или first_name, last_name и другие атрибуты для нового пользователя) и создают объект, который представляет пользователя. Все манипуляции с базой данных будут скрыты. Сам объект должен иметь свойства для имени и других атрибутов и даже метод Save () для возврата изменений. Но основная идея заключается в том, что вы всегда работаете с созданным объектом, объектом, который уже имеет контекст и связан с чем-то в реальном мире (то есть с пользователем в базе данных), а не с пустой оболочкой, которая будет заполняться по ходу работы.