TGViewer
Уютное сообщество джавистов Уютное сообщество джавистов @javaarchivebooks · 1.87K subscribers
Post #298 1.68K
Best practice: не использовать boolean параметры в методах

На вопрос выше сходу ответят только знатоки многопоточки. Остальные наверняка попытались придумать, что означает cancel(true), и в чём разница с cancel(false).

Метод Future#cancel — наглядная иллюстрация, почему boolean параметры в public методах не ок. Потому что непонятно, что означают true и false.

Public методы определяют интерфейс. В хорошем API пользователю не нужно зарываться в доки, чтобы понять, как пользоваться классом.

Даже если у параметров хорошие имена, итоговые true и false выглядят несимпатично и неудобно.

С private методами ситуация другая. Внутренняя реализация должна быть читаемой и понятной, но требования всё же менее жёсткие, чем у public методов. В private методах флажки допустимы, но увлекаться не стоит:)

Как исправить метод с boolean параметром?

1️⃣ Сделать два метода

и зашить "особенность" флажка в название. Необязательно дублировать реализацию — public методы могут под капотом вызывать private метод с флажком.

Так сделано, например, в классе HashMap для методов put(k,v) и putIfAbsent(k,v). Оба в итоге вызывают private метод putVal с флажком ifAbsent

2️⃣ Создать enum с двумя значениями и передавать его вместо флажка
enum ReplicateStatus {NO_REPLICATION, REPLICATE};
...
saveRequest(req, ReplicateStatus.REPLICATE);

Такой вариант предлагается в книге Effective Java (Item 51).

Выглядит лучше, чем флажки, но на практике такой способ встречается редко. Если enum нужен только для обозначения true/false, быстрее и проще сделать 2 метода с разными именами.

🔥 Ответ на вопрос перед постом — "невозможно определить".

Мы не знаем точно, начала ли задача выполнение до вызова cancel. Даже если задача стартовала, успех cancel зависит от кода внутри задачи. Поэтому итог непредсказуем🤷‍♀️

#полезное
  • 👍 5
  • ⚡ 1
More from @javaarchivebooks
  1. Aug 17, 2026Уютное сообщество джавистов pinned «Java Работа - канал с вакансиями по Java. Если вы хоти…
  2. Aug 17, 2026Java Работа - канал с вакансиями по Java. Если вы хотите найти работу, то подписывайтесь н…
  3. Feb 26, 2026Java: быстрый старт Автор: Джейми Чан Год издания: 2021 #java #ru Скачать книгу
  4. Feb 19, 2026Java. Состояние языка и его перспективы Автор: Федор Урванов Год издания: 2023 #java #ru С…
  5. Sep 16, 2025Java: устранение проблем Автор: Лауренциу Спилкэ Год издания: 2023 #java #ru Скачать книгу
  6. Aug 30, 2025Mastering Secure Java Applications Авторы: Debopam Poddar, Joyanta Banerjee, Tarun Kumar C…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →