У меня есть привычка создавать классы, которые, как правило, передают объекты для выполнения операций над ними, а не присваивают их переменной-члену, а операции ссылаются на переменную-член.Это гораздо более процедурно для меня, чем ОО.
Это ужасная практика?Если да, каковы неблагоприятные последствия (производительность, потребление памяти, более подвержены ошибкам)?Разве проще и более тесно увязано с ОО-принципами, такими как инкапсуляция, в пользу переменных-членов?
Придуманный пример того, что я имею в виду, приведен ниже.Я склонен делать следующее:
public class MyObj()
{
public MyObj() {}
public void DoVariousThings(OtherObj oo)
{
if (Validate(oo))
{
Save(oo);
}
}
private bool Validate(OtherObj oo)
{
// Do stuff related to validation
}
private bool Save(OtherObj oo)
{
// Do stuff related to saving
}
}
, тогда как я подозреваю, что должен делать следующее;
public class MyObj()
{
private OtherObj _oo;
public MyObj(OtherObj oo)
{
_oo = oo;
}
public void DoVariousThings()
{
if (Validate())
{
Save();
}
}
private bool Validate()
{
// Do stuff related to validation with _oo
}
private bool Save()
{
// Do stuff related to saving with _oo
}
}