Работа с полями, которые могут видоизменяться или быть новыми экземплярами в целом - PullRequest
3 голосов
/ 29 марта 2010

Структуры обычно используются для неизменяемых данных, например, номера телефона, который не изменяется, но вместо этого вы получаете новый (например, число 000, становящееся 0001, будет означать два отдельных числа).

Однако такие фрагменты информации, как Name, строка, могут либо видоизменяться (компания abc меняет свое имя на abcdef или получает новое имя, например def). Для таких полей, как я полагаю, они должны находиться в изменяемом классе, а не в неизменной структуре?

Мой способ структурирования кода состоит в том, чтобы иметь неизменную концепцию, такую ​​как Address (любое изменение - это полностью новый адрес), в структуре, а затем ссылаться на нее из класса, такого как Customer, поскольку у Customer всегда есть адрес. Поэтому я бы поместил CompanyName или Employer в класс, поскольку он изменчив. Но имя может либо видоизменяться и быть таким же 1 экземпляром, либо новым именем, хотя компания все еще владеет первым именем.

Будет ли правильный шаблон для назначения нового экземпляра (например, имя новой компании, но старое имя все еще принадлежит компании)?:

string name = "";
string newName = new string();
newName = "new";
name = newName;

А мутация просто стандартная схема присваивания?

Спасибо

1 Ответ

0 голосов
/ 29 марта 2010

Я бы не беспокоился об изменчивости / неизменности на этом уровне. Просто напишите свой код, чтобы быть прямым.

Одна вещь о вашем примере кода:

string newName = new string();
newName = "new";

Приведенный выше код создаст два разных экземпляра строки; сначала пустая строка будет присвоена newName, затем будет назначена новая строка ("new"). Скорее всего, назначение экземпляра пустой строки будет оптимизировано, поскольку оно явно никогда не используется. Просто назначьте строку, где она должна быть:

string name = "new";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...