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

Обзор

Оригинальное название статьи: «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).

Следствие

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

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