Как называется этот анти-паттерн? - PullRequest
5 голосов
/ 01 апреля 2009

Конечно, некоторые из вас имели дело с этим. Это происходит, когда программисты слишком заняты ОО и забывают о производительности и наличии базы данных.

Например, допустим, у нас есть таблица электронной почты, и она должна быть отправлена ​​этой программой. При запуске он ищет все, что нужно отправить, следующим образом:

Emails = find_every_damn_email_in_the_database();
FOR Email in Emails
  IF !Email.IsSent() THEN Email.Send()

Это хорошо с точки зрения "не повторяй себя", но иногда это неизбежно и должно быть:

Emails = find_unsent_emails();
FOR Email in Emails
  Email.Send()

Есть имя этого?

Ответы [ 13 ]

0 голосов
/ 01 апреля 2009

Этот антипаттерн имеет несколько возможных имен.

  • Антипаттерн "Не знаю-SQL"
  • "Фашист-ДБА" антипаттерн
  • "Что-делает-'latency'-значит?" антипаттерн
0 голосов
/ 01 апреля 2009

Производительность первого действительно может быть хорошей, в зависимости от типа Emails. Если это просто итератор (представьте себе std::vector::begin() в C++), то это лучше и лучше, чем сначала хранить все неотправленные электронные письма в каком-либо контейнере.

0 голосов
/ 01 апреля 2009

Stoopid Amateurs.

Серьезно, я видел это только у людей со степенью информатики и вообще без профессионального опыта. Когда я преподавал в Duke, мой советник и я провели класс «Крупномасштабное программирование», где мы заставляли людей смотреть именно на такие ошибки.

...