Подтвердить что ты не робот

Неправильно ли иметь статические и нестатические методы в одном классе?

Неправильно ли иметь статические и нестатические методы в одном классе?

4b9b3361

Ответ 1

На самом деле нет обычного программирования Java.

Но если вы активно работаете с инъекцией зависимости, у вас, вероятно, мало или вообще нет статических методов. В таком контексте довольно распространено иметь только несколько классов полезности со статическими методами и другими статическими методами.

Ответ 2

Нет, это не так. Например, обычное использование заключается в использовании статических методов factory в определении класса.

Ответ 3

Мне кажется, что создавать статические классы utils можно, особенно если вы не уверены (пока), каков должен быть дизайн, потому что вы все еще узнаете о проблемной области.

Статичность - это маркер "еще не разработан". Часто статическое решение вполне адекватно; но иногда, по мере продвижения проекта, вы обнаружите, что вам нужно переписать эту "целую часть", но у вас есть (на этом более позднем этапе) гораздо более полное понимание проблемной области и поэтому имеют возможность фактически разработать "правильное решение" этих проблем.

Я думаю, что программисты забивают себе несправедливость в отношении "переделки". Вам нужно сделать работу, чтобы понять работу достаточно хорошо, чтобы правильно работать. Я не вижу пути мимо этого улова 22;

Я могу привести много примеров статических данных из основного API. java.lang.Math, java.util.Arrays, java.util.Collections. НО обратите внимание, что эти классы являются "классами utils", которые существуют только для обеспечения множества статических методов. ИМХО, наличие статических методов в "объекте с сохранением состояния" - это просто попрошайничество для рефакторинга.

Я постараюсь, чтобы сегодняшние дизайнеры API хотели бы иметь возможность разбивать Integer (и другие классы-оболочки)... НО они хорошо и действительно зациклились на том, что у них есть. Который является предупреждением сам по себе... что статичность подразумевает окончательный, и есть чертовски веская причина, по которой (в отличие от С++) java-методы могут быть переопределены по умолчанию. Static по своей сути более "привязан", чем нестатический... по трюку вы НЕ МОЖЕТ адаптировать реализации к различным ситуациям, контекстам и т.д. И т.д. И т.д.

Приветствия. Кит.

Ответ 4

Я считаю своей плохой идеей иметь статические и нестатические методы в одном классе с тем же именем. Это может быть очень запутанным. Я бы предложил попробовать сделать имена разными в этом случае.

Точно так же не создавайте методы с тем же именем, кроме другого случая, или методы с тем же именем, что и класс в одном классе. Оба являются законными и даже встречаются в JDK, но запутывают IHMO.

Ответ 5

Я думаю, не особенно, когда речь идет о синглонах.