Конференция "Прочее" » Верно ли это? [D6, XP]
 
  • clickmaker © (10.11.08 17:21) [20]
    > согласно ООП надо вместо паблик переменных использовать
    > паблик свойство

    если класс или структура используется только как контейнер для данных (н-р, в параметрах методов), то нафик там свойства?
  • Marser © (10.11.08 20:48) [21]

    > Eraser ©   (10.11.08 03:47) [1]
    >
    > > [0] Abcdef123   (10.11.08 03:32)
    >
    >
    > > что согласно ООП надо вместо паблик переменных использовать
    > > паблик свойство
    >
    > да, только с поправочкой - в ООП, принятом в Делфи.

    В Шарпе тоже.
  • Bless © (11.11.08 10:27) [22]
    топикстартеру:
    Замечание твоего знакомого программиста - это как библейские заповеди:
    они не всегда бесспорны и уместны, но если все всегда будут им следовать, то жить будет легче, чем когда все всегда будут их нарушать.
  • GrayFace © (11.11.08 12:26) [23]
    +1. В частности, при отсутствии свойств использование get'теров и set'теров весьма спорно.

    Но "_" безусловно надо избегать в нормальных функциях, в методах - тем более, там просто нельзя.
  • Leonid Troyanovsky © (11.11.08 13:26) [24]

    > Поросенок Винни-Пух ©   (10.11.08 11:23) [7]

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

    В поле класса TApplication.

    --
    Regards, LVT.
  • stas © (11.11.08 15:45) [25]
    Abcdef123   (10.11.08 03:32)
    Чем же этот программер незаслужил доверия? )))
    В том что он посоветовал подвоха нет.
  • Anatoly Podgoretsky © (11.11.08 15:52) [26]
    Ну уже ответили в [5]
  • Поросенок Винни-Пух © (11.11.08 15:54) [27]
    В поле класса TApplication.

    А чем заменить глобальную переменную TAplication?
    Каким полем и в каком классе?
  • Anatoly Podgoretsky © (11.11.08 16:00) [28]
    > Поросенок Винни-Пух  (11.11.2008 15:54:27)  [27]

    Заменить функцией (конструктором), при том если по реализации системы, или встроеный в систему, или скрытой локальной переменной.
  • Leonid Troyanovsky © (11.11.08 16:14) [29]

    > Поросенок Винни-Пух ©   (11.11.08 15:54) [27]

    > А чем заменить глобальную переменную TAplication?

    Она уже есть, и пока заменить ее нечем.
    Борланды пошли на компромисс, целясь в повторное использование
    кода в GUI, консолях и dll. Короче говоря, отошли от ООП, а так бы было
    что-то вроде:

    with TApplication.Create(nil) do
     begin
        Initialize;
        ..
        Run;
        ..
     end;


    Доступ к Application организовали б через прокси-объект, создаваемый
    по мере надобности программистом, и снабженным нужными свойствами, например, тем же DecimalSeparator.

    --
    Regards, LVT.
  • Anatoly Podgoretsky © (11.11.08 16:49) [30]
    > Leonid Troyanovsky  (11.11.2008 16:14:29)  [29]

    Вроде и сейчас так же можно, вот только другие модули будут обращаться к другому экземпляру TApplication.
    Борланд мог сделать функцию, которая бы возвращала ссылку на экземпляр, как бы не было сделано обращение к Application.
  • DesWind (11.11.08 17:19) [31]
    Какои смысл прописывать метод доступа, если он будет вида fField:=Value;
    Либо это вообще свойство для чтения?
  • Leonid Troyanovsky © (11.11.08 17:57) [32]

    > Anatoly Podgoretsky ©   (11.11.08 16:49) [30]

    > Вроде и сейчас так же можно

    Можно обращаться к самой переменной Application,
    а надо б было к промежуточному объекту, который бы
    и управлял доступом к объекту {F}Application.
    Ну, например, чтоб он не давал сделать Applcation.Free,
    хотя, в данном случае, ничего предосудительного в оном нет.

    > Борланд мог сделать функцию, которая бы возвращала ссылку
    > на экземпляр, как бы не было сделано обращение к Application.

    Вот здесь их подвело, IMHO, стремление к общности:
    вдруг некто захочет пользовать Application из длл в чуждом процессе.

    А, все равно, идея пригодилась лишь в package, т.е. при отказе
    обслуживать чужих.

    --
    Regards, LVT.
  • Поросенок Винни-Пух © (11.11.08 18:02) [33]
    насколько я знаю, никто пока в массовых объемах не убивал ни TApplication, ни DecimalSeparator ни другие глобальные переменные.
    Так что все это пустое. Эстецво и сектанство.
  • Leonid Troyanovsky © (11.11.08 18:03) [34]

    > DesWind   (11.11.08 17:19) [31]

    > Либо это вообще свойство для чтения?

    В дельфи свойство для чтения легко становится таковым для записи,
    если оно не релизовано геттером.

    --
    Regards, LVT.
  • Leonid Troyanovsky © (11.11.08 18:10) [35]

    > Поросенок Винни-Пух ©   (11.11.08 18:02) [33]

    > Так что все это пустое. Эстецво и сектанство.

    М.б.

    Хочу лишь обратить внимание на разрыв между
    двумя дельфийскими моделями: модульной и ООП.
    А граница проходит по глобальным переменным и
    секциям их инициализации/финализации.

    Например, невозможность управлять инициализацией собс-ного
    приложения раздражало, IMHO, не одно поколение программистов.

    --
    Regards, LVT.
  • Leonid Troyanovsky © (11.11.08 18:24) [36]

    > Поросенок Винни-Пух ©   (11.11.08 18:02) [33]

    > насколько я знаю, никто пока в массовых объемах не убивал
    > ни TApplication, ни DecimalSeparator

    Во-первых, где границы твоих знаний?
    Во-вторых, использование глобальных переменных вопреки
    требованиям ООП (а дельфи позиционируется как ООП ЯВУ)
    должны чем-то быть оправданы?

    А где оные бонусы?
    В консольных приложениях, где никто и не предполагает
    использовать Application?
    Или в длл (свят-свят)?

    --
    Regards, LVT.
  • Anatoly Podgoretsky © (11.11.08 19:17) [37]

    > Какои смысл прописывать метод доступа, если он будет вида
    > fField:=Value;

    Сегодня так, а завтра SetfField(Value);

    Основная идея скрыть прямой доступ до переменной, абстрагироваться от хранения, типа, прочего, но чтобы выглядело как переменная. Всю необходимую работу выполнит компилятор, где подменит на прямое присвоение, где будет вызван метод с контролем, а где то даже и поля не будет, а будет вызвана функция, которая например обратится к ФСБ с докладом, мол тут Вася Пупкин делает что-то.

    Свойство это великая вещь.
  • Anatoly Podgoretsky © (11.11.08 19:18) [38]
    > Leonid Troyanovsky  (11.11.2008 17:57:32)  [32]

    Applcation.Free, равносилен закрытию приложения, почему бы и нет?
    Мы же можем работать разными методами с динамическими массивами.
  • Anatoly Podgoretsky © (11.11.08 19:20) [39]
    > Leonid Troyanovsky  (11.11.2008 18:10:35)  [35]

    Зато оно сейчас не дает покоя остальным программистам.
 
Конференция "Прочее" » Верно ли это? [D6, XP]
Есть новые Нет новых   [134446   +31][b:0][p:0.001]