Pull to refresh

Самые глупые вещи, которые я сделал будучи программистом

Java *
Translation
Original author: Ioannis Cherouvim
Оригинальное название статьи: «The * stupidest things I’ve done in my programming job», поэтому перевод названия статьи не очень точен, однако то, что автор имел ввиду под "*" мы опустим — мы ведь не знаем наверняка :)

Я больше не стыжусь своих грешков, так что — вперед:

1. ORM


Глупость

Создал собственную ORM (Object Relational Mapping) библиотеку

Следствие

Неразбериха в проекте после двух лет поддержки, в следствие хаков-обходов моей ORM библиотеки для запуска прямых SQL запросов

Что я должен был сделать

Использовать Hibernate, iBATIS, Cayenne или нечто подобное.


2. EAV


Глупость

Использование модели Entity-attribute-value

Следствие

Отсутствие масштабируемости (scalability) и полная невозможность запускать нужные запросы на уровне базы данных.

Что я должен был сделать

Использовать процедуру нормализации БД.

3. Database Access


Глупость

Последовательный доступ к базе данных с использованием одного общего соединения для всех пользователей.

Следствие

Нулевая масштабируемость. Очень большое время отклика для 10 и более пользователей, работающих с приложением.

Что я должен был сделать

Не делать этого и использовать пул соединений. Например c3p0, чтобы повторно использовать соединения.

4. IDE


Глупость

Избегал IDE (Integrated development environment), отказывался изучать и использовать

Следствие

Невозможность быстро строить, тестировать и развертывать (deploy) приложения.

Что я должен был сделать

Изучать IDE: NetBeans, Eclipseт.д.

5. Транзакции


Глупость

Не использовал вообще.

Следствие

Поврежденные данные в приложениях, в том числе повреждение функциональности.

Что я должен был сделать

Использовать транзакции

6. Prepared Statements


Глупость

Использование Statement, конкатенация строк и наивные преобразования запросов в «безопасные».

Следствие

Возможны SQL инъекции.

Что я должен был сделать

Использовать Prepared Statements, составление валидного запроса в зависимости от драйвера JDBC, который используется в приложении.

7. Бизнес-логика


Глупость

Вся логика заключена в шаблоне вывода (JSP).

Следствие

Беспорядочный код, неудобный для сопровождения

Что я должен был сделать

Использовать шаблон MVC или Front Controller. Ещё лучше использовать MVC в рамках таких open-source продуктов как Struts, Spring MVC, других.
Tags:
Hubs:
Total votes 138: ↑115 and ↓23 +92
Views 8K
Comments Comments 61