Property

Тема в разделе "Lotus - Программирование", создана пользователем fedotxxl, 3 авг 2010.

  1. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Работаю в аутсорсинговой компании... Часть моих друзей считает, что property нужны. Мне же кажется, что это только усложнее, код выглядит хуже и менее читабельно. Например,
    Код (LotusScript):
    myClass.a = "a"
    Set myClass.obj = myObj
    или
    Код (LotusScript):
    Call myClass.setA("a")
    Call myClass.setObj(obj)
    Что думаете по этому поводу? Главное, хрен их переубедишь. Поэтому половина кода с проперти, другая - с функциями.
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Что тут "усложнее"? О.о

    Щас припрутся явисты и начнут орать, что надо с методами, потом дельфисты запоют арию про проперти.
    Вообще, то это лишь синтаксис, в обоих случаях используются методы доступа, что не нарушает требования парадигмы.
    Тут не надо спорить (см подпись), тут надо договориться в рамках проекта/проектной группы как писать и все. Киньте монету.
     
  3. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Ну да, в java нету. А т.к. использовать можно и java и ls, то хорошо бы соблюдать один стиль, а не делать винегрет.
    По свойствам вообще не поймешь, оно только возвращает значение или только присваивает, или всё делает.
     
  4. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    однох монописс да без разницы.
    "когда в товарищах согласья нет..." (с) Крылов
    Также рекомендую к прочтению: С. Макконнелл, Совершенный код , Питер, 2007 г. , ISBN 5-469-00822-3, 5-7502-0064-7 Гарантировано получите массу удовольствия.

    Лично мне проперти нравяца возможностью записи: Set myClass.obj = new Obj() - нет необходимости объявлять лишнюю переменную Dim myObj As new Obj().
    P.S. IMHO: развод на флейм.
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Нудятина :)
     
  6. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    IMHO: развод на флейм. :)
     
  7. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Не ))) просто стиль изложения показался мне "тяжеловатым".
     
  8. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Проперти не столько нужны, сколько удобны в некоторых случаях.
    Синтаксис обращения к проперти и к полю класса идентичный. Что удобно для изменения способа чтения/записи поля.
    Скажем, был класс

    Код (LotusScript):
    Class Person
    father as Person
    lastName as String
    End Class

    Dim fil as Person, bob as Person
    Обращения:
    Код (LotusScript):
    Set fil.father = bob ' запись
    Set bob = fil.father ' чтение
    fatherName = fil.father.lasName 'чтение
    Замена на проперти никак не изменит конструкции обращений

    Код (LotusScript):
    Class Person
    Property Get father as Person  
    Set father = readFromExternalSource(Me).father 'получение новым способом
    End Property
    Property Set father as Person
    Call writeFatherToExternalSource(father) 'запись новым способом
    End Property

    Property Get lastName as String
    lastName = readFromExternalSource(Me).lastName 'получение новым способом
    End Property

    Property Let lastName as String
    Call writeLastNameToExternalSource(lastName) 'запись новым способом
    End Property
    End Class
    Если бы не было проперти пришлось бы менять конструкцию обращений на

    Код (LotusScript):
    Call fil.setFather(bob) ' запись
    Set bob = fil.getFather ' чтение
    fatherName = fil.getFather().lasName 'чтение
    Т.о. проперти крайне удобны для добавления операций при чтении/записи полей.
    Вопросы целесообразности прямого обращения к полям класса оставим за рамками.

    Минусы: Реализация пропертей в LS не безглючная. В частности, нельзя переопределить проперти в наследнике, если он в другой библиотеке.
     
Загрузка...

Поделиться этой страницей