1. Java / Говнокод #17878

    +77

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    int processRequest(Request rq) {
        try {
            ... blablabla ...
            if ("".equals(object.getPrefix())) {
                throw new IllegalArgumentException(bundle.getMessage(MessageKeys.ILLEGAL_PREFIX));
            }
            ... blablabla ...
        } catch (IllegalArgumentException ex) {
            if (ex.getMessage().equals(bundle.getMessage(MessageKeys.ILLEGAL_PREFIX))) {
                return ErrorCodes.ILLEGAL_PREFIX;
            }
            return ErrorCodes.UNKNOWN_ERROR;
        }
        ... blabla ...
        return ErrorCodes.OK;
    }

    Интересный подход

    Запостил: debugger, 27 Марта 2015

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

    • И тем не менее, можно представить ситуацию, когда где-нибудь в глубине blahblahblah кто-то выкидывает исключение с точно таким же сообщением, и чтобы не обрабатывать одну и ту же ситуацию дважды, человек решил таким вот образом поступить.
      Ответить
      • Сообщения для людей, а не для программы.
        Ответить
      • Даже если допустить эту ситуацию, то проблемма в том что из бандла достаются локализованные строки и именно они участвуют при определении самой ошибки. Да, скорее всего они уникально будут описывать ошибку - ну потому что будет глупо локализовывать разные ошибки одинаковыми строками (хотя и такое допустимо). Проблема тут именно в этом дебильном и не нужном сравнении (equals) двух строк.
        Ответить
    • if ("".equals(object.getPrefix())) {


      if (object.getPrefix().isEmpty()) не?
      Ответить
      • Неужели в Яве можно создать разные пустые строки? Интересно зачем.
        Ответить
        • ABA
          Ответить
          • Так не спасет же, ну а вдруг ту же самую пустую строку присвоят (public static final String EMPTY_STRING = "";)
            Ответить
            • >а вдруг ту же самую пустую строку присвоят
              Тогда ошибка в геноме погромиста.
              Кто знает что делает напишет в нужном месте new String(s) и не будет так писать в других местах.
              Ответить
      • java.lang.String#isEmpty только с Java 1.6. Может код старше.
        Ответить
    • а если object == null?
      Ответить

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