Модераторы: Vitalik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дизайн классов, обсуждение внутреннего дизайна классов 
:(
    Опции темы
Seldon
Дата 9.9.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



мои предложения: 
  • те методы, которые нужны только самому классу и все поля - в private
  • те методы, которые могут понадобицца наследникам - protected
  • те методы, которые нуждны другим классам - в public
  • доступ к полям, которые нужны другим классам - через свойства (property)

--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
Vitalik
Дата 9.9.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Собственно тут сложно с чем-то не согласиться.. smile

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

Это сообщение отредактировал(а) Vitalik - 9.9.2006, 18:22
PM MAIL WWW ICQ YIM   Вверх
Seldon
Дата 10.9.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



нижеследующее касаецца беты5 (Виталик выложит в ближайшее время)
  • SynUniFormat.pas->TSynUniFormat.(VerifyStream|VerifyFileName|VerifyEmptyFileName)
    [Pascal Hint] SynUniFormat.pas(44): H2077 Value assigned to 'TSynUniFormat.VerifyStream' never used
    т.к. вызываецца исключение, результат функции использовацца не будет:
    Код

    function a:Boolean
    begin
      Result:=true;
      raise Exception.Create('')
    end;

    begin
      try
        if a then
          DoSmth;
      finally
      end;
    end.

    если в a будет возбуждено исключение, управление будет передано в родительский относительно if..then блок try-finally. и результат a не важен. по этому можно даже заменить функции на процедуры:
    Код

    class procedure TSynUniFormat.VerifyStream(AStream: TStream);
    begin
      if not Assigned(AStream) then
        raise Exception.Create(ClassName + '.ImportFromStream: AStream property can not be nil');
    end;
    ...
    TSynUniFormat.VerifyStream(Stream);
    {дальнейшие действия}
    ...
  • в принципе TSynUniFormat.VerifyEmptyFileName дублирует функциональность TSynUniFormat.VerifyFileName: если в VerifyFileName AFileName='', то FileExists вернёт false и будет сгенерировано исключение 
  • В TSynUniFormat методы Import... и Export... сделать абстрактными?
  • Методы ISynUniXmlParser и ISynUniXmlTag тоже сделать абстрактынми?
  • TSynUniFormatNativeXml.ImportFromStream
    [Pascal Hint] SynUniFormatNativeXml.pas(179): H2077 Value assigned to 'TSynUniFormatNativeXml.ImportFromStream' never used
    в теле метода меняецца Result, а в конце
    Код

    XmlParser.Free();
    Result := True;

    smile
  • в том же методе конструкции вида 
    Код

    Result := False;
    raise Exception.Create(...)

    присвоение Result ничего не даёт (см. 1.)
  • TSynUniFormatNativeXml15.(ImportToken|ExportToken) объявлены без override
    [Pascal Warning] SynUniFormatNativeXml15.pas(47): W1010 Method 'ImportToken' hides virtual method of base type 'TSynUniFormatNativeXml'
    просто описка, или это имеет какой-то глубокий смысл?
  • TSynUniFormatNativeXml15.(ImportInfo|ImportAttributes|ImportKeyList|ImportSetImportToken|ImportRange) ничего не возвращают. как я понимаю, они должны возвращать true в случае успешного импорта. можно сделать как в TSynUniFormatNativeXml20 - просто возвращать true.... но тогда вопрос: а зачем вообще нужен этот результат функции?

--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема »


 




[ Время генерации скрипта: 0.0694 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.