Re[3]: Размер класса
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 14.06.06 14:49
Оценка:
Здравствуйте, Pyro Sun, Вы писали:

PS>Спасибо за ссылку почитал... Как видно собрались там любители смолтолка... Я тоже себя к ним отношу...

PS>но чтобы на нем какие то проекты писать... бр....
Оффтопик — а что мешает проекты писать?
--
Бесчастнов Евгений
Re[3]: Размер класса
От: WolfHound  
Дата: 14.06.06 17:24
Оценка: 1 (1)
Здравствуйте, Pyro Sun, Вы писали:

PS>вот я и хочу сказать что класс за 1000 строчек это пример плохого дизайна архитектуры, либо отсутствие постоянного рефакторинга кода...

Либо генератор кода.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: Размер класса
От: pagid Россия  
Дата: 14.06.06 17:25
Оценка: :)
Здравствуйте, Сергей Губанов, Вы писали:

PS>>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек.


СГ>А на каком языке?

СГ>Вот одна строка на одном языке: IF a THEN b ELSIF c THEN d ELSE e END

А в обероне есть классы?
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re[3]: Размер класса
От: IT Россия linq2db.com
Дата: 14.06.06 23:12
Оценка:
Здравствуйте, Pyro Sun, Вы писали:

PS>вот я и хочу сказать что класс за 1000 строчек это пример плохого дизайна архитектуры, либо отсутствие постоянного рефакторинга кода...


Либо отсутствие в языке таких средств как #region.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Размер класса
От: Трурль  
Дата: 15.06.06 04:56
Оценка: :)
Здравствуйте, pagid, Вы писали:

PS>>>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек.


P>А в обероне есть классы?


Нету. Следовательно вопрос о размере класса просто не имеет смысла. Классов вообще не должно быть.
Re[3]: Размер класса
От: klapaucius  
Дата: 15.06.06 12:03
Оценка: :))
Здравствуйте, pagid, Вы писали:

P>А в обероне есть классы?


Конечно же нет! Там есть так называемые "пастухи умозрительных протоколов":
pointer of abstract record
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[4]: Размер класса
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 15.06.06 12:41
Оценка:
Здравствуйте, klapaucius, Вы писали:

K>Здравствуйте, pagid, Вы писали:


P>>А в обероне есть классы?


K>Конечно же нет! Там есть так называемые "пастухи умозрительных протоколов":

K>
K>pointer of abstract record
K>


pointer of — это Вы мощно придумали!

Типы данных языка Component Pascal имеющие отношение к "class":

  • Object = RECORD ... END;
    Нерасширяемый value-тип — аналог struct в C# или в C.
    Варианты с указателями:
    PtrObject = POINTER TO Object;
    RefObject = POINTER TO RECORD ... END;

  • ExtensibleObject = EXTENSIBLE RECORD ... END;
    Расширяемый value-тип — аналог class/struct в C++.
    Варианты с указателями:
    PtrExtensibleObject = POINTER TO ExtensibleObject;
    RefExtensibleObject = POINTER TO EXTENSIBLE RECORD ... END;

  • AbstractObject = ABSTRACT RECORD ... END;
    Расширяемый абстрактный value-тип. Тоже что EXTENSIBLE, но размещать переменные этого типа нельзя.
    Варианты с указателями:
    PtrAbstractObject = POINTER TO AbstractObject;
    RefAbstractObject = POINTER TO ABSTRACT RECORD ... END;

  • LimitedObject = LIMITED RECORD ... END;
    Переменные этого value-типа можно (расширять и) размещать только в его собственном модуле, в других модулях размещать переменные этого типа нельзя.
    Варианты с указателями:
    PtrLimitedObject = POINTER TO LimitedObject;
    RefLimitedObject = POINTER TO LIMITED RECORD ... END;
  • Re[5]: Размер класса
    От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
    Дата: 15.06.06 12:53
    Оценка:
    "Классовые" типы данных языков C# и Component Pascal, которые можно сопоставить друг с другом.

  • Ссылочные типы:

    sealed class A {}
    A = POINTER TO RECORD END

    class A {}
    A = POINTER TO EXTENSIBLE RECORD END

    abstract class A {}
    A = POINTER TO ABSTRACT RECORD END

  • Типы-значения:

    struct A {}
    A = RECORD END

    Все остальные "классовые" типы Component Pascal не имеют эквивалентов в C#.
  • Re: Размер класса
    От: Trean Беларусь http://axamit.com/
    Дата: 15.06.06 13:05
    Оценка:
    Здравствуйте, Pyro Sun, Вы писали:

    PS>Кто как считает? Какой размер класса в строках оптимален для понимания того что там происходит?


    PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек.

    PS>Да и 1000 это пожалуй великовато.

    Для меня больше 500 строк уже много, размер метода не должен вообще не должен быть больше одного экрана в идеале.

    Не совсем по теме, но можно найти некоторые ответы по оценке качества кода и сложности проекта

    http://pmd.sourceforge.net/products.html
    Re[5]: Размер класса
    От: klapaucius  
    Дата: 16.06.06 07:50
    Оценка: 1 (1) -1 :))
    Здравствуйте, Сергей Губанов, Вы писали:

    СГ>pointer of — это Вы мощно придумали!


    Значит там "to"? Жаль, жаль. С "of" получается гораздо смешнее.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re: Размер класса
    От: WinterMute Россия http://yarrr.ru
    Дата: 16.06.06 08:24
    Оценка:
    Здравствуйте, Pyro Sun, Вы писали:

    PS>Кто как считает? Какой размер класса в строках оптимален для понимания того что там происходит?


    PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек.

    PS>Да и 1000 это пожалуй великовато.

    Ну а если функциональность класса действительно большая, из-за сложности объекта который он описывает? Что тогда, делать что-то вроде: MyClass_volume1, MyClass_volume2...
    Re[2]: Размер класса
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 16.06.06 08:34
    Оценка:
    Здравствуйте, WinterMute, Вы писали:

    WM>Ну а если функциональность класса действительно большая, из-за сложности объекта который он описывает? Что тогда, делать что-то вроде: MyClass_volume1, MyClass_volume2...


    Есть такое слово — декомпозиция...
    --
    Бесчастнов Евгений
    Re[2]: Размер класса
    От: Kluev  
    Дата: 16.06.06 08:56
    Оценка: 1 (1) +3 -1
    Здравствуйте, WinterMute, Вы писали:

    WM>Здравствуйте, Pyro Sun, Вы писали:


    PS>>Кто как считает? Какой размер класса в строках оптимален для понимания того что там происходит?


    PS>>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек.

    PS>>Да и 1000 это пожалуй великовато.

    WM>Ну а если функциональность класса действительно большая, из-за сложности объекта который он описывает? Что тогда, делать что-то вроде: MyClass_volume1, MyClass_volume2...


    Имхо, следует поступать согласно здравому смыслу, не обращая внимания на догмы: класс должен... бла-бла-бла подставить нужное по вкусу.

    З.Ы. Авторитетов для программиста быть не должно.
    Re[6]: Размер класса
    От: PhantomIvan  
    Дата: 16.06.06 15:42
    Оценка:
    Здравствуйте, Трурль, Вы писали:

    Т>
    Т>char*f="char*f=%c%s%c;main(){printf(f,34,f,34,10);}%c";
    Т>main(){printf(f,34,f,34,10);}
    Т>


    Т>На другом языке:


     def l = '\\';
     def q = '\"';
     def b = '\$';
     def n = '\n';
    
     def introspect(s)
     {
      System.Console.WriteLine($" def l = '$l$l';$n def q = '$l$q';$n def b = '$l$b';$n def n = '$(l)n';$n$n def introspect(s)$n {$n  System.Console.WriteLine($b$q$s$q);$n }$n$n introspect($q$s$q);");
     }
    
     introspect(" def l = '$l$l';$n def q = '$l$q';$n def b = '$l$b';$n def n = '$(l)n';$n$n def introspect(s)$n {$n  System.Console.WriteLine($b$q$s$q);$n }$n$n introspect($q$s$q);");
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[3]: Размер класса
    От: ZrenBy Россия  
    Дата: 16.06.06 16:46
    Оценка: 18 (1) :)
    Вот еще одна строка на одном языке:
    n[i]=(Z-=(n[i++]=(Z-=(n[i++]=(Z-=(n[i++]=(Z-=(n[i++]=(Z-=(n[i++]=Z/I)*I)/J)*J)/K)*K)/L)*L)/Y)*Y);
    Re[4]: Размер класса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.06.06 02:04
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Либо отсутствие в языке таких средств как #region.


    +1

    И partial
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[3]: Размер класса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 17.06.06 02:04
    Оценка: :)
    Здравствуйте, Kluev, Вы писали:

    K>З.Ы. Авторитетов для программиста быть не должно.


    А как же Страуструп?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[4]: Размер класса
    От: Kluev  
    Дата: 17.06.06 17:52
    Оценка: 32 (4) +1
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Kluev, Вы писали:


    K>>З.Ы. Авторитетов для программиста быть не должно.


    VD>А как же Страуструп?


    А Страуструп, кстати в авторитеты и не лезет. Просто и неневязчиво излагает свои мысли: "тут сделали так, тут наступили на грабли — переделали, это хотели сделать красиво получилось как всегда, а вот эта вещь действительно удалась". При этом он не страдает навязчивой идеей по продвижению тараканов в головы программистов. В отличии от некоторых деятелей типа Вирта-состоварищи и министерства пропаганды из m$
    Re[5]: Размер класса
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.06.06 17:25
    Оценка:
    Здравствуйте, Kluev, Вы писали:

    K>>>З.Ы. Авторитетов для программиста быть не должно.


    VD>>А как же Страуструп?


    K>А Страуструп, кстати в авторитеты и не лезет.


    А что можно влезть в аторитеты?

    K> Просто и неневязчиво излагает свои мысли: "тут сделали так, тут наступили на грабли — переделали, это хотели сделать красиво получилось как всегда, а вот эта вещь действительно удалась". При этом он не страдает навязчивой идеей по продвижению тараканов в головы программистов. В отличии от некоторых деятелей типа Вирта-состоварищи и министерства пропаганды из m$


    У него у самого тараканов море и другим он их распространяет. Хотя надо признать, что он намного более разумен нежели многие фанаты С++.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[6]: Размер класса
    От: Kluev  
    Дата: 18.06.06 18:31
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Kluev, Вы писали:


    K>>>>З.Ы. Авторитетов для программиста быть не должно.


    VD>>>А как же Страуструп?


    K>>А Страуструп, кстати в авторитеты и не лезет.


    VD>А что можно влезть в аторитеты?


    K>> Просто и неневязчиво излагает свои мысли: "тут сделали так, тут наступили на грабли — переделали, это хотели сделать красиво получилось как всегда, а вот эта вещь действительно удалась". При этом он не страдает навязчивой идеей по продвижению тараканов в головы программистов. В отличии от некоторых деятелей типа Вирта-состоварищи и министерства пропаганды из m$


    VD>У него у самого тараканов море и другим он их распространяет. Хотя надо признать, что он намного более разумен нежели многие фанаты С++.



    Насчет тараканов, все в мире относительно. Верх знамени (cockroach free)
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.