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

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

12 голосов | спросил Ankur 16 Maypm09 2009, 16:12:29

5 ответов


0

Не совсем в обычном Java-программировании.

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

ответил krosenvold 16 Maypm09 2009, 16:17:20
0

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

ответил Teemu Kurppa 16 Maypm09 2009, 16:20:14
0

Я думаю, что хорошо создавать статические классы утилит, особенно когда вы не совсем уверены (пока), каким должен быть дизайн, потому что вы все еще изучаете проблемную область.

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

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

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

Готов поспорить, что сегодняшним разработчикам API хотелось бы иметь возможность разбивать Integer (и другие классы-обертки) ... НО они хорошо и действительно привязаны к тому, что у них есть. Что само по себе является предупреждением ... что static подразумевает final, и есть чертовски веская причина, по которой (в отличие от C ++) java-методы могут быть переопределены по умолчанию . Static по своей природе является более «связывающим», чем нестатический ... в том смысле, что вы НЕ МОЖЕТЕ адаптировать реализации к различным ситуациям, контекстам и т. Д. И т. Д. И т. Д.

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

ответил corlettk 16 Maypm09 2009, 17:17:49
0

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

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

ответил Peter Lawrey 16 Maypm09 2009, 23:39:18
0

Наверное, не особенно, когда имеешь дело с одиночками.

ответил ken 16 Maypm09 2009, 16:14:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132