Как стать автором
Обновить

30 вредных советов для php-разработчиков

Время на прочтение4 мин
Количество просмотров8.7K
Я не стал сильно заморачиваться и расписывать очевидные факты, но большинство моментов, которые меня пугают в коде, тут изложены. Я постарался сделать список особо лаконичным, чтобы вам не пришлось вчитываться, но и максимум понятным, чтобы даже новички поняли что так делать нельзя. В общем ниже список моих вредных советов, основанных на том, с чем я сталкиваюсь в повседневной жизни.



Итак поехали:

  1. Обязательно пишите вёрстку прямо в php-скриптах и выводите её только через echo (зачем-то же нужна эта конструкция языка).

  2. Старайтесь использовать как можно больше echo в ваших проектах, помните, что её придумали крутые разработчики языка, до которых вам далеко.

  3. Прописывайте параметры подключения к БД в каждом файле где это нужно, и нигде не храните инфу о том где и какие конфигурации прописаны — пусть все остальные развиваются до вашего уровня.

  4. Создавайте как можно больше подключений к БД в разных частях проекта, желательно чтобы многие из них вызывались одновременно, вообще создавайте новое подключение к БД при каждом запуске любой функции.

  5. Не используйте стандартные функции языка — пишите свои, они будут работать в 100 раз лучше и именно так, как вам нужно.

  6. Подключайте все файлы проекта в любом месте проекта даже если вам нужна всего одна функция.

  7. Используйте массив GLOBALS — без него вообще никак, разработчики языка придумали его для вашего удобства, а вот проблемы с закончившейся озушкой это проблемы сервера, а не языка.

  8. Вызывайте функции и используйте циклы прямо в верстке, это вывод информации, там без функций никак.

  9. Ни в коем случае не используйте mysql-параметры, пишите переменные $_GET, $_POST, прямо в запрос, чтобы не тратить лишнее процессорное время, оно для нас очень важно.

  10. Дублируйте один и тот же метод во всех классах каждый раз, когда он вам понадобится, забудьте про наследование это пережиток прошлого.

  11. Используйте только статические методы и свойства, не нужно создавать объекты, классы придуманы не для этого.

  12. Методы классов, работающих с БД должны возвращать РЕСУРС и никак по-другому, лучше используйте while каждый раз когда получаете данные от класса.

  13. Обязательно делайте sql-запросы в циклах, это очень важно, иначе как вы получите все записи из таблицы?

  14. Храните дату и время в полях типа varchar, потому-что поле datetime имеет какой-то свой странный формат.

  15. Создайте себе поле в таблице, где для каждой записи будете дописывать через <br /> все изменения с записью, и обязательно именно так. Ни в коем случае не создавайте отдельную таблицу логов, зачем нам лишний файл на диске.

  16. Не создавайте много ячеек в таблицах БД, лучше используйте seialize и забудьте про кодировку при сохранении, если unserialize каждый раз выдает ошибку, просто игнорируйте её.

  17. Вообще игнорируйте ВСЕ ошибки в проекте, выключите error_reporting — он только мешает, не будьте задротами.

  18. Никогда, слышите, никогда не проверяйте переменную на существование, просто выводите её прямо в шаблон, после пункта 17, Notice для вас уже не проблема.

  19. Пишите только так for($i=0; $i<count($arr); $i++), потому-что считать количество элементов в массиве при каждой итерации это хорошо, а постинкремент работает намного быстрее, а кто говорит наоборот просто не знает о чем говорит. И перебирать большой массив нужно именно сначала, потому-что так быстрее.

  20. Не используйте парсинг ни в каком виде, это очень плохо, лучше скачивайте страницу целиком вместе с версткой и сохраняйте её в БД прямо как получили, не тратьте время на парсинг, тем более использование DomDocument очень замедляет проект, и его же еще учить нужно, а вам некогда — надо проект писать.

  21. Храните всю информацию о пользователях в одной таблице — данные для авторизации, анкетные данные, домашние адреса и телефоны, места работы, да вообще любую информацию храните в одной таблице и не забывайте про serialize

  22. Не используйте индексы и ключи в БД, и тем более связи между таблицами, это очень плохо.

  23. Никогда не используйте таблицы-справочники, лучше дублируйте все в одной колонке, тем более если колонка содержит большие и часто повторяющиеся данные.

  24. Вы слышали про стандарт именования функций и методов? Забудьте! Кто вообще придумал что в именах функций должна быть какая-то логика, да и функции с именами a(), b(), aa() намного короче вызывать.

  25. Делайте функции как можно больше, если программисту лень читать что делает функция — он плохой программист.

  26. Никогда и нигде не пишите комментарии, потому-что тру-прогерам они не нужны, в худшем случае можно написать коммент типа /*это функция a(), она принимает две переменные $a и $b*/ для совсем тупых.

  27. Функции должны принимать как можно больше параметров, делать с ними кучу самых разных действий и возвращать всегда непредсказуемый результат, чтобы всё-таки заставить прогеров прочитать их исходники.

  28. Так как мы уже решили не использовать наследование, повторно писать функции с других классов, то надо дополнить это еще и тем, что класс должен быть не меньше 1000 строк, и чем он больше, тем лучше.

  29. Для того чтобы получить по-настоящему большой класс, нужно для каждой скобочки выделять целую строчку, нужно обязательно создать очень много свойств класса, на всякий случай, а еще мы помним что ни в коем случае нельзя использовать стандартные функции php — всегда пишем свои.

  30. И последнее, допустим что вам нужен скрипт, у которого действия меняются в зависимости от даты (а вдруг), обязательно пишите эту дату прямо в скрипт, чтобы каждый раз заходить и исправлять её руками, чтобы всегда держать скрипт под контролем.

Спасибо за внимание!

UPD
Публикация внезапно набрала отрицательный рейтинг, хотя всё что в ней изложено взято с реального кода.
Отвечаю на комментарии:
От lavkasnov и другие, кто затронул эту тему
Именно так советует PSR

Конечно, но не в случаях с циклами и условиями. см. PSR-2 5.1-5.6

От CentALT
Уважаемые профессионалы подскажите как правильно делать верстку чтобы не получилось как в 1 и 2?

Создавать отдельные файлы шаблонов, которые кстати можно подключать внезапно не используя echo

А вообще есть куча способов выводить информацию в шаблон без echo
Я например для таких целей использую DOM.
Т.е. у меня есть чистый html-шаблон, в котором расставлены псевдо-переменные, а шаблонизатор цепляя шаблон и зная сколько значений имеет переменная просто парсит нужный элемент верстки столько раз сколько нужно, а дальше через saveHTML выводит результат. В результате мы имеем чистые шаблоны, в которых только верстка, чистые скрипты в которых нет верстки и всего 1 echo на весь проект состоящий из нескольких сотен страниц и счастливых кодеров и верстальщиков так как ни те ни другие не боятся что кто-то может уронить проект или накрыть верстку. Для подробностей советую посмотреть старый добрый xTemplate (хотя сейчас есть более мощные аналоги вообще с полным разделением кода)

От G-M-A-X
На проде выключил E_NOTICE
display_errors само собой

Конечно, а потом благополучно можно засовывать несуществующие переменные прямо в шаблон и не морочить себе голову лишней информацией типа Notice, зачем вообще придумывали проверки на существование и проверки на пустоту, они же только усложняют код.
Теги:
Хабы:
-10
Комментарии62

Публикации

Истории

Работа

PHP программист
157 вакансий

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн