ДействиеСценарий / Говнокод #6527 Ссылка на оригинал

0

  1. 1
  2. 2
// 13512 строк
public class UIComponent extends FlexSprite implements IAutomationObject, IChildList, IConstraintClient, IDeferredInstantiationUIComponent, IFlexDisplayObject, IFlexModule, IInvalidating, ILayoutManagerClient, IPropertyChangeNotifier, IRepeaterClient, IStateClient, IAdvancedStyleClient, IToolTipManagerClient, IUIComponent, IValidatorListener, IVisualElement

Взято из http://juick.com/yzh44yzh/1338788

*trollface.jpg*

Запостил: makc3d makc3d, (Updated )

Комментарии (21) RSS

  • обычная практика
    это аспектно-ориентированное программирование
    Ответить
  • Я тоже когда первый раз увидел - подумал, что чего-то не понимаю. Через пару лет знакомства ощущение не прошло, но только теперь кажется, что не понимаю не я, а авторы этого шедевра 🙂
    Ответить
  • я столько новых интерфейсов для себя открыл (о существовании которых даже не подозревал)
    Ответить
  • наверное, самое большое открытие, к которому приходишь на данном сайте:
    если код получается некрасивым, то в этом виноват ты, программист, а не язык и не инструменты

    то есть, например, в данном случае тоже с первого взгляда можно было бы развести руками - мол, ну что поделать, если компонент такой универсальный?
    а выходов всегда много. в данном случае:
    1. хреновое проектирование. Действительно ли нам нужны именно столько и таких интерфейсов?
    2. хреновая реализация. Допустим, все интерфейсы нужны. Но неужто нельзя было их сгруппировать по иерархии, наделать базовых классов с длинным наследованием?
    Ответить
    • >сгруппировать по иерархии, наделать базовых классов с длинным наследованием?

      "Умение героически преодолевать трудности, которые создает твой собственный инструмент..."
      Ответить
    • Не, там все было прозаичнее - сначала не знали как сделать, но был кто-то, кто когда-то что-то делал на SWing'e. И вот начали от туда копировать, по-памяти. Потом перестало срастаться. Потом стало срастаться, но не стем чем надо... Сейчас пытаются переписать по-новой, но поезд уже далеко ушел...
      Т.е. интерфейсы накапливались по мере развития проекта. За каждым из них вполне может стоят история недоисправленных багов и недореализованых улучшений. Кроме всего прочего - это не самая современная версия этого класса. И у некоторых интерфейсов там уже начинают циферки появлятся. Типа StyleManager2, LayoutManager2 и т.п.
      Ответить
      • диагноз - отсутствие изначально продуманного проектирования.
        А как обычно: -Нам нужно сделать новую крутую хрень! -Круто, а что это будет за хрень?Как мы ее сделаем? -Ээээ, вот у нас уже есть наша старая крутая хрень, давайте сделаем как там! -Да!
        в результате кашу того, что было, приправили новой приправой, и запутались еще больше, чем с первой хренью.

        А все потому, что, как обычно, не задавали постоянно вопросом "а зачем нам это? действительно ли оно нам надо?"
        Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8