Суп из спагетти
Мне по работе доводится программировать на множестве языков, и некоторые вещи меня, так сказать, удивляют.
Гляжу в код PHP с постоянными переключениями PHP-HTML вроде:
<IMG src="<?php echo $data['source'];?>" height=150 <?php if ($data['width100']) echo "width=100%"; ?> >
Читается плохо. И вдруг меня осеняет: это же как слушать речь, пересыпанную матюками! «Картинка, б****, из е**** файла, высота 150 ****, и растянуть, на ***, на всю е***** страницу, ***!»
Тоже самое с SQL. Вездусущие конкатенации и экранирование кавычек, да и ещё без пробелов:
UPDATE '.$data['table'].' SET '.$data['field'].'=\''.$data['value'].'\' WHERE $where
Перевожу: «Мне, пожалуйста, дайте помидоров, ну, кило, думаю, два, может, два с половиной, и ещё давайте, наверное, огурцов — нет, лучше капусты, скорее всего, один кочан, ну там, чтобы это, поменьше, и ещё, знаете, вчера по телику, говорили, что — ах да! — ещё картошки...»
В своих проектах я давно от этого избавился, сделав подсистему функций и классов наподобие sql_update($table, $data, $where). Потратил полдня, сэкономил недели. Но глядя в чужой код, не перестаю удивляться: охота вам, кодерам, ходить по граблям, поедая кактусы? Ведь случайная кавычка или точка выливается в часы отладки, чтобы найти в вашем супе из спагетти муху. Или не хватает ума мыслить выше плоского стандартного кода? Вот этим и отличаются программисты от кодеров.