Исходя из опыта в веб разработке – вывел несколько правил, соблюдая которые можно легко ориентироваться в коде, легко поддерживать и дорабатывать. Я не буду упоминать банальных вещей, вроде «пишите комментарии», это вещи, которые каждый сам решает для себя. Начнем с простого
Храните общие участки кода – классы, доступы к базе данных – отдельно от проекта (сайта). Таким образом, вы обезопасите себя от случайного доступа и утечки паролей через FTP, Тем более через прямые запросы через HTTP (если вы умудряетесь хранить пароли в текстовом файле без защиты через htaccess), и сделаете общие данные едиными для всех проектов. Если пароль к базе данных или почтовому ящику, вдруг изменится – вы разом поменяете его ко всем проектам. И сэкономите место на диске.
Дальше интереснее)
Храните все обозначения в одном основном файле. У вас обязательно для каждого проекта (сайта) должен быть выделен основной файл. В этом файле собраны все подключения, все общие базовые функции, авторизация, проверка прав, в общем – все, что должно работать в рамках проекта. И в этом файле – в виде массива опишите все основные глобальные переменные. Например:
$status=array(0=>’В работе’,1=>’Завершен’,2=>’На утверждении’);
<>Спросите, зачем?
Теперь все статусы – у вас находятся в одном месте, их можно сменить при необходимости и они обновятся везде. Теперь вы можете во всех шаблонах – строить выпадающие списки с обходом всех статусов
foreach ($status as $item){ … }
Теперь вы можете при выводе конкретного статуса – сослаться на его обозначение, вместо того чтобы перечислять все статусы в шаблоне
<?=$status[$data['STATUS']]?>
Вы можете хранить эти переменные в исполняемом файле, если более нигде они не будут нужны, просто проще искать и исправлять, когда все в одном легкодоступном файле.
Идем далее
Соблюдайте одинаковые названия для всех методов и функций. Как часто вам приходилось использовать AJAX (подробнее про использование ajax описано здесь) в своих разработках? Есть на форме кнопочка и по нажатию на нее – нужно обратиться к серверу и достать данные, либо обновить. Здесь вы можете пойти несколькими путями:
- Обратиться к исполняемому файлу с указанием метода (По которому система поймет, какую часть кода вы хотите выполнить). Допустимо при очень маленьком проекте
- Обратиться к специально выделенному для Аякса файлу (например Ajax.php), также с передачей метода. Допустимо при проекте средней сложности
- Обратиться к папке Ajax и файлу с названием исполняемого метода. Желательно при больших сложных проектах
Можете, конечно, сделать как-нибудь иначе, но это уже будет отступление от простоты. Все аяксы – желательно отводить отдельно. Порядок подключения к страницам файлов Javascript– может быть совершенно аналогичен – отдельный файл для общих скриптов и если потребуется – отдельный Javascriptфайл для каждой страницы, названный, внимание! Точно также, как и файл загружаемой страницы
При нажатии на кнопку – мы ссылаемся на функцию Javascript, которая Внимание! Называется точно также, как и метод, который мы передаем через Ajax
Например,так
Function show_data(id){
$.ajax(‘ajax.php’,{act: ‘show_data’,id:id};
}
Теперь, когда вам нужно будет разобраться, почему по нажатию на кнопку – выдается какая-то хрень вдруг – вы, через отладчик по передаче метода через Ajaxлегко поймете – куда вы обращались и быстро найдете эту функцию в Javascript, быстро найдете исполняемый участок кода
Подходим к самому сложному для понимания
Называйте колонки к базе данных с префиксом таблицы. Например, данные по товарам можете хранить с префикса CAT, например CAT_ID, CAT_NAME, CAT_DATE
Таким образом, вы
- Избежите возможных случайных повторений с ключевыми словами (DATE, ORDER, TEXT) и никогда не будете мучатся с обозначением в виде апострофов `order`
- Всегда будете знать, какое из полей используется при их перечислении.
SELECT CAT_NAME,TREE_NAME FROM …
Вместо
SELECT CAT.NAME as CAT_NAME,TREE.NAME as TREE_NAME FROM …
- Можете не придумывать алиасов для таблиц при джойн операциях
… FROM SITE_CAT LEFT JOIN SITE_TREE ON CAT_TREE_ID=TREE_ID
Вместо
… FROM SITE_CAT as CAT LEFT JOIN SITE_TREE as TREE on CAT.TREE_ID=TREE.ID
Из последнего примера – можно вычленить еще одно правило. Если колонки таблицы подразумевают связь – колонка в зависимой таблице должна содержать префикс ссылаемой таблицы.
Если у нас конкретный товар цепляется к ветке дерева – он должен содержать колонку CAT_TREE_ID
Таким образом – вы всегда сможете понять какую колонку и с какой вы связываете, не заглядывая в структуру таблицы и не предполагая, что разработчик создал эту колонку для объединения.
Конечно, если полностью подходить к делу – можно накопать еще. Это основные правила, которые здорово помогают. Следуйте им, и будет у вас счастье