Должен ли я указать сеттер или нет? - PullRequest
3 голосов
/ 05 августа 2010

Вот начальная спецификация для простого класса Address.Это упрощение, поскольку оно игнорирует сложности, такие как квартиры в одном и том же здании, потенциально имеющие одинаковое «число»,
, например, 29a, 29b.

 class Address
    {
    private:
    int number;
    string name;
    string postcode;
    public:
    //getters implemented but ommited 
    };

Если предполагается, что Address используется в качестве служебного класса (возможное использование в будущем другими разработчиками в других проектах):

// ВОПРОС
1.Для каждого атрибута Address, указанного в приведенной выше спецификации, укажите, будет ли целесообразно оборудовать класс Address методом установки для соответствующей переменной экземпляра.Дайте краткое обоснование в каждом конкретном случае.

Ребята, это вопрос из моего задания, поэтому, пожалуйста, не задавайтесь вопросом, как устроен класс Address.

Ответы [ 4 ]

8 голосов
/ 05 августа 2010

Зависит от источника адреса.Если, скажем, вы читаете это из базы данных, то я бы не стал устанавливать сеттеры, так как вы не хотите, чтобы люди меняли значения вашей базы данных без правильных разрешений.Однако, если вы читаете эти данные от пользователя, вам придется учитывать тот факт, что пользователи вносят опечатки и корректировки или понимают, что они ввели свой старый адрес или что-то из этого, и вы должны предусмотреть эти изменения.

5 голосов
/ 05 августа 2010

Для меня это должен быть неизменный класс, со всеми полями, установленными во время создания, и получателями для каждого.

1 голос
/ 05 августа 2010

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

Не уверен, что здесь означает «имя», если это улица с неправильным названием или имя человека.

0 голосов
/ 05 августа 2010

Должен быть неизменным классом в моем pov, со всеми полями, установленными во время создания, получателем для каждого поля.

Если вам действительно нужно изменить адрес после построения, подумайте о установщике для полного набора полей, чтобы избежать изменения одного поля, которое делает данные объектов несовместимыми. Полностью зависит от использования объекта.

...