Илья Ермаков писал(а):
Реально, при наличии экспорта только на чтение (которого не было в тех языках, где изначально появились проперти, в Дельфи, и в ВизуалБарсике, кажется), они уже менее полезны. С++-серы их не имеют - и не парятся.
В Обероне экспорта только для чтения не было, он был заимствован позднее из Оберона-2. А в Обероне-2 он, видимо, и появился по причине отсутствия этих самых "пропертей" и защищенных членов - реализовать их было несколько сложнее и требовало введения новых сущностей и изменения старых, что противоречило Виртовскому подходу - "не смог за полчаса реализовать, значит это не нужно". В общем-то, для учебного языка/компилятора это правильный подход, иначе студиозусы просто не смогут реализовать некую штуку за отведенное им время.
Впрочем, в Дельфи в качестве "сеттера/геттера" может использоваться не только метод, но и поле. В целом, такой подход гибче и мощнее., а сами пропетри позволяют стандартизировать и автоматизировать работу. Наличие свойств в Дельфи позволило существенно упростить поддержку (де)сериализации компонентов. Да в общем-то компилятор берет на себя большую часть работы, уменьшая количество ошибок.
Что касается С++серов, то лни явно парятся, так как велосипеды появляются вновь и вновь, а microsoft
реализовала их поддержку ( очередным велосипедом, но как я понимаю, уже на уровне компилятора ). А простейшую имитацию можно легко сделать, так как в С++ поддерживается перегрузка методов. Это не проперти, да, но зато просто. Или воспользоваться средствами языка ( перегрузка операций ) сделать псевдопроперти га базе структур или классов.
В Обероне так не получится и приходится всё тащить в компилятор или делать нечто монструозное, как, например, в А2, с постоянной возможностью где-то чего-то забыть. Да из-за этих недопропертей ( ну или из-за такой реализации их ) в А2 есть некоторые проблемы с ними ( и с производительностью, в связи с чем рядом с проперью лежит и соответствующиее поле с для кеширования значения проперти, и с взаимодействием и не совсем понятно, как соединить Формы созданные в Билдере с кодом (обработчики и тп ), тогда как в Дельфи таких проблем нет).
Цитата:
Обычно сразу чётко ясно, либо это пассивные данные, не расширяемый тип - и можно высунуть на чтение, либо в любом случае это придётся порождать (property любого абстрактного объекта, РАЗУМЕЕТСЯ, будет реализовываться вычислимо через метод потом) - и тогда сразу заводить геттеры и сеттеры.
Представить себе, что сразу не было ясно, будет ли опосредование методами - или это просто поле, - такое представить трудно.
Если это один-два человека, как с Обероном и работают, то, пожалуй, что так. Особенно, если это вполне законченная замкнутая мини-система. Но я уже писал выше, что так далеко не всегда и такая модель не всегда пригодна, для больших команд, больших проектов. Да и ilovb тоже написал.