Стиль кодирования, имя переменной - PullRequest
1 голос
/ 20 февраля 2011

У меня есть метод, например getSome(String param, boolean active).Когда я вызываю этот метод, я создаю переменную, как показано ниже.

boolean active = true;

getFoo("some", active);     // To get active foo

getFoo("some", !active);     // To get inactive foo

Стоит ли создавать дополнительную переменную или просто вызывать getFoo("some", true);

Ответы [ 2 ]

9 голосов
/ 20 февраля 2011

Если у вас есть логический параметр, вам следует рассмотреть возможность использования двух вариантов этой функции. Наличие логического значения в параметре не помогает пользователю прочитать код. Чтобы избежать дублирования, фактическая реализация может содержать функцию с логическим параметром, но она может быть скрыта от пользователя API.

getSomeActive("foo")
getSomePassive("foo")

Другой альтернативой являются два значимых флага, например, перечисление вместо логического.

getSome("foo", FetchStyle.ACTIVE)
getSome("foo", FetchStyle.PASSIVE)

И чтобы ответить на ваш вопрос: необходимость объявить дополнительную переменную для ясности просто говорит нам, что у нас есть проблема в интерфейсе. Если вы не можете изменить интерфейс или обернуть его, то переменная является одним из способов документирования намерения. К сожалению, кто-то еще, вероятно, просто изменит код и удалит переменную позже.

Ссылка: Совет № 12 в чистом коде от дяди Боба

2 голосов
/ 20 февраля 2011

Зависит от того, когда кто-то еще читает ваш код, они будут думать: «Почему он / она высказал там правду?».Если причина для установки true там очевидна, тогда вам просто нужно указать true, в противном случае создайте переменную с описательным именем, чтобы они могли ее понять.

...