Jawa / Говнокод #4430 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
class  JNewConnectionPanel extends JPanel {

 public JNewConnectionPanel() {
    this(true, false);
  }

  public JNewConnectionPanel(final boolean ok, final boolean cancel) {
    // ...
    if (ok) {
      // ...
    }
    if (cancel) {
      // ...
    }
    // ...
  }

 // ...
}

продолжаю макакакодить = )

Запостил: Lure Of Chaos Lure Of Chaos, (Updated )

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

    • 1. final уберегает от плохой практики присваивать параметрам значения
      2. final переменная видна из анонимных классов, таких, как слушатели
      3. вообще final (не параметрам и не конструктора, а, например, полям) помогает контролировать изменяемость параметров - в яве нужно по возможности повторно использовать обьекты
      Ответить
      • аа, может Вы еще и все классы объявляете или abstract или final ("проектируйте наследование или запрещайте его явно" (С) Дж.Блох)
        Ответить
        • abstract - если предполагаю обязательное расширение подклассами, при этом методы часто бывают final
          final - если наследование не имеет смысел
          Ответить
          • спасибо КО.

            Блох говорил что все классы должны быть или абстрактными (во всяком случае с мануалом по расширеню в жавадоке) или финальными.
            Дескать в идеальной архитектуре третьего не до. Иначе кто-то наверняка нарушит контракт (принцип лискоу)
            Ответить
            • ну почему КО? это я так делаю, согласно личным убеждениям. Когда как многие вообще финалами не заморачиваются.

              я допускаю третий случай, что можно пользоваться классом и так, а можно добавить функциональности. Но при этом я большинство методов делаю финальными
              Ответить
      • Ставить final примитивам не имеет абсолютно никакого смысла - они передаются по значению.
        Также абсолютно не имеет смысла ставить final ссылкам на коллекции - само содержание коллекции можно изменить.
        Потому в сишке еще есть смысл ставить const куда не лень, а в Java же final для переменной (а не класса или метода) имеет смысл только для доступа из анонимного класса к внешней переменной.
        Ответить
        • не скажите.
          1.final это не имеет значения, что по значению
          void m(int p) {
          p=1;
          }

          этот кусок компилируется, хоть и не имеет смысла. второй кусок просто не скомпилируется
          void m(final int p) {
          p=1;
          }


          2. final для поля, например, коллекции позволит ее изменение, но запретит изменять ссылку на нее, что может как помочь повторно использовать обьекты (например, заставит написать v.clear() вместо v=new Vector() ), так и избавит от необходимости при обновлении синхронизировать содержание - например, с визуальным элементом навроде JList.

          если же нам надо запретить изменение коллекции, можно воспользоваться одним из утилитных методов, например, обернуть в неизменяемый список, методом Collections.unmodifiableList(list)
          Ответить
      • Ну это из контекста не очевидно совсем. Я бы например по названию класса сказал бы, что это окно с кнопками. А Ok и Cancel задают наличие соответствующих кнопок. Так что пояснения бы не помешали при публикации ГК.
        Ответить
  • Шото много логики для одного класса.
    Сколько там строчек после каждого if?

    и что за названия переменных? Не лучше ли передавать массив типов кнопок, которые можно нажать?
    Ответить

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

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

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


    8