При чтении вопросов о переполнении стека или программистах стека я часто вижу ответы, в которых говорится, что вам следует избегать (или, по крайней мере, иметь очень мало) глобального состояния в своих программах. Я пишу небольшую программу в минуту, и я был обеспокоен тем, что я представляю много глобального состояния. Позвольте мне показать вам пример кода.
public class ContactUpdater
{
//this is used in a few method and requires a web request so it's fairly
//expensive to populate - therefore we only want to do it once.
private Group _group;
public ContactUpdater
{
_group = GetGroup();
}
}
Этот подход означал, что мой код был усеян _group
, что казалось уродливым и неправильным, поэтому я решил использовать такое свойство:
public class ContactUpdater
{
private Group _group;
private Group Group
{
get
{
if (_group == null)
{
_group = GetGroup();
}
return _group;
}
}
public ContactUpdater()
{
}
}
Теперь у меня есть пустой конструктор, и везде, где мне нужно использовать группу, я теперь просто вызываю Group
, а не _group
.
У меня есть пара вопросов:
- Использую ли я глобальное состояние в обоих этих фрагментах кода?
- Во втором примере избегается глобальное состояние?
- Является ли один из примеров кода предпочтительным способом кодирования?