Статьи

10 вещей, которые я никогда не хочу увидеть, чтобы Java-разработчик снова делал

Примечание куратора: Энди является генеральным директором OSI ( Open Software Integrators ). Он дальновидный и исключительный блоггер .

Уильям Ф. Бакли-младший однажды сказал: «Консерватор — это тот, кто стоит за всю историю, кричит« Стоп », в то время, когда никто не склонен это делать или проявляет большое терпение к тем, кто так призывает». Я не знаю много об этом, но я хочу кричать «Стоп!» в полчищах разработчиков Java, делающих любое из следующего — или когда я вынужден сделать это.

0. Пройдите через набор результатов и создайте объект

while (result.next()) {
 String name = result.getString(“name”);
 String address = result.getString(“address”);
 String email = result.getString(“email”);
 String phone = result.getString(“phone”);
 stuff.add(new AddressEntry(name,address,email,phone));
}

Так что если вы хипстер-разработчик, а не профессионал, очевидно, что ORM плохи, потому что вы читали их в каком-то
блоге от разработчика, у которого когда-то была «проблема производительности» с Hibernate. Ручное кодирование этого «очевидно» делает его «лучше», но вы наверняка можете использовать JDBCTemplate или что-то еще. Я буду придерживаться JPA / Hibernate, хотя, спасибо (пример бесчувственного пылающего).

1. Напишите PL / SQL в транзакционной системе

Со временем ваша бизнес-логика переместится в РСУБД. Ваша любимая транзакция устройства будет перемещена в базу данных. Кто-то превратит это во что-то, похожее на COBOL и связанное с триггерами, которые вызывают другие сглаженные версии в материализованном представлении. Другими словами, за короткий промежуток времени у вас будет самая сложная устаревшая система. Это хорошая новость для инвесторов Oracle, но то, что хорошо для Oracle, плохо для всех нас.

2. Написать / отладить или даже использовать приложение Swing

В течение многих лет я думал, что настолько ужасен в коде GUI, что никогда не должен касаться внешнего интерфейса. Как оказалось, Java никогда не должен касаться внешнего интерфейса. Качаться медленно. Да, вы можете создавать быстрый код Swing, если вы работаете в Sun и пишете NetBeans, и вам не нужно беспокоиться о браузерах, и вы можете потратить на это много денег… но Swing работает медленно. Это также неприятно и делает GUI, которые по умолчанию выглядят как карикатура на родные GUI. Тогда есть модель песочницы Java …

3. В ролях

Java Generics не идеален или даже решение проблемы, которую я бы предпочел Есть редкий крайний случай, когда Generics Java не может эффективно обрабатывать …

Тем не менее, я действительно не хочу

Foo bar = (Foo) FooFactory.get(“bar”);

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

4. Сделайте расчет даты с календарем или датой

Жизнь слишком коротка, чтобы справляться со сложными вычислениями даты / времени с использованием классов JDK Date и Calendar. Встроенные классы обеспечивают только самые примитивные операции и делают все, кроме интуитивно понятных. Используйте современную библиотеку, такую ​​как JODA Time. Если вы не тот тип, который пишет веб-приложения на ассемблере x86, в этом случае вам может понравиться делать арифметику дат с использованием JDK Date и Calendar.

5. Настройте репликацию сеанса

Это не 2000 год. Все продукты и проекты распределенного кэша переименованы в хранилища NoSQL Key-Value. Давайте использовать AJAX / Javascript, если нам нужны клиенты с состоянием и не использовать HttpSession для … чего-либо. Это создаст высоконадежные масштабируемые приложения, которыми мы все можем наслаждаться, и не будет более глубоких темных исключений, которые натыкаются на ночь. Не поймите меня неправильно, это было забавное время, это купило моей жене минивэн (я предпочитаю мой Ninja 650), но теперь пришло время делать вещи лучше, быстрее и умнее.

6. Напишите алгоритм сортировки

Самое ужасное, что я не обратил внимания на класс алгоритмов, код сортировки написан людьми, которые также не заметили, что в Java есть необходимый алгоритм сортировки (или где-то есть сторонняя библиотека с вашим именем) или они просто не заметили, как работает Comparable и Comparator. Иди и прочитай это сейчас и больше не совершай греха самосортировки.

7. Напишите свой собственный связанный список, стек, очередь и т. Д.

По общему признанию написание основного связанного списка довольно легко. В Википедии есть хорошая страница (http://en.wikipedia.org/wiki/Linked_list) со связанными списками с кодом и всем. Так что да, я мог бы вырезать и вставить, но почему? Может быть, я просто ленив, но я предпочитаю использовать структуру данных, которая уже прошла тестирование. Нет, на самом деле я ленивый, я прилагаю большие усилия, чтобы оставаться таковым.

8. Напишите мой собственный пул, коллекцию или общий код параллелизма

Знай, Даг Ли. Люблю Дуга Ли. Будьте едины с java.util.concurrent Дуга Ли. Даг Ли не просто смертный, он очень параллельное существо, способное обдумать решение любой проблемы параллелизма, прежде чем вы это сделаете. 

9. Разобраться с каркасом

Как вы пишете слово, которое означает все журналы Commons, SLF4J и т. Д. SUCK. Sun вызвала эту проблему, не просто перенеся интерфейс Log4J в JDK много лет назад. Oracle может помочь исправить это, сделав java.util.logging не отстойным. Тем не менее, я бы предпочел, чтобы все стандартизировали отстой, который является java.util.logging, чем другой человек придумал другой «блестящий обходной путь», который позволил бы нам всем иметь «выбор регистрации». «У меня будет кока-кола» «Пепси в порядке?» «Как бы то ни было, они оба делают тебя толстым, какая разница?»

СТОП!