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

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
if (!policyIds.isEmpty()) {
    AtomicInteger recordCount = new AtomicInteger(0);  // <- WTF?!!!!
    try {
        for (final BigDecimal policyId : policyIds) {
            helper.processPolicy(policyId.longValue(), /* ещё 7 параметров */ recordCount);
        }
    } catch (IOException e) {
                // код обработки исключения опущен
    }
    saveToFile(ctx, fileName, outputStream.toByteArray(), recordCount);
}

// А вот что делает helper.processPolicy
if (selector.matches(policy)) {
    if (processRequestImpl(policy, ctx, fileName, outputStream, ioService, outputDir, applicationContext)) {
        recordCount.getAndAdd(1);
    }
}

Integer иммутабелен? Не проблема!

Запостил: roman-kashitsyn roman-kashitsyn, (Updated )

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

    • Примитивы передаются по значению, объекты - по ссылке.
      Зато методы могут возвращать значения.
      К слову, AtomicInteger должен использоваться там, где есть многопоточность.
      Ответить
      • А в С# есть, бебебе...
        void processPolicy(long policyId, /* ещё 7 параметров */ , ref int processedRecordCount);
        Возвращать значения, конечно, можно, разве что не всегда наглядно:
        void processPolicy(ref int processedRecordCount);
        или
        int processPolicy();
        Ответить
      • >Зато методы могут возвращать значения.
        Нихера себе блин. Круто.
        "Я хочу чтобы вы сделали язык. Суть такова. ...<skip> ... Можно возвращать значения из методов."
        Ответить
    • Да, это первое, что приходит на ум, я тоже начал искать треды. Но нет, здесь нужна мутабельность AtomicInteger. Человек по непонятной причине размазал ответственность одного класса по двум, отсюда девять параметров в вызове метода и передача мутабельных чисел. Рефакторинг решил проблему.
      повторяю: передача по ссылке не нужна
      Ответить
        • Да не нужен там мутабельный инт, проблема в размазанной ответственности: передавать 9 параметров в методе - это ненормально.
          Ответить
          • Если приходит более трех параметров, то метод уже дурно пахнет.
            Но 9 это далеко не предел. Где-то на сайте был пост с 33-ю параметрами в конструкторе.
            Ответить

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

Семь раз отмерь — один отрежь, guest!

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


    8