Должен ли я избегать свойств, доступных только для записи, при разработке языка ОО?

Я разрабатываю объектно-ориентированный язык программирования для целей обучения. У языка есть свойства, например:

Class Fruit:
  Property ReadWrite Float weight
  Property WriteOnly Integer someWriteOnlyProperty # <-- avoid?

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

3 ответа

Решение

Обязательно создавайте свойства только для записи - просто имейте в виду, что они имеют ограниченное использование (если вы только собираетесь писать в него и никогда не открывать его, зачем иметь свойство?).

Можно также использовать простой метод. Это уменьшит путаницу тех, кто использует ваш код.


Java и.NET имеют свойства только для записи, поэтому существуют прецеденты.

Свойство только для записи не имеет смысла для меня. Свойства только для чтения для информационных целей очень полезны, но каков конкретный сценарий для "Я даю вам информацию, но я никогда не смогу узнать то, что вы знаете"?

Другие языки OO позволяют это. Например, в Java вы можете создать личную переменную и добавить метод, который позволяет вам изменять переменную, но не читать ее. Ваш подход больше похож на Microsoft, явно создавая "свойства", но я не понимаю, почему это будет проблемой. Если вы разрабатываете ОО-язык для предотвращения всех неудачных дизайнерских решений, ваш язык ничего не сделает, кроме как вывести "ОТКАЗ" и затем завершить работу.

Другие вопросы по тегам