Хороший PHP-код должен быть структурированным, хороший PHP-код должен быть стандартизирован, хороший PHP-код должен быть адаптивным, хороший PHP-код должен быть безопасным...
Я обязательно задам этот вопрос, когда буду проводить собеседование в SitePoint. Вопрос: Что вы думаете? каковы преимущества и недостатки PHP-кода? Потому что этот вопрос может дать мне общее представление о том, какой тип программиста кандидат, а не просто проверить его владение функциями PHP (сертификация PHP от Zend хороша в этом, и вопросы на собеседовании с PHP-программистом от Yahoo тоже такие).
Важно отметить, что этот вопрос позволяет мне узнать, сталкивался ли кандидат с опытом принятия фрагмента беспорядочного кода у ленивого программиста для повторного использования или помощи другим членам команды с подобными вещами.
Признаюсь, у меня самого нет удовлетворительного ответа на этот вопрос, но я знаю ответы, которые хочу услышать:
хороший PHP-код должен быть структурирован. Большие участки кода следует разделить на функции или методы, а небольшие участки кода, не бросающиеся в глаза, следует прокомментировать, чтобы позже было понятно их назначение. А внешний код, такой как HTML, CSS, Javascript и т. д., должен быть максимально отделен от программы. Возможности объектно-ориентированного программирования PHP могут помочь программистам упорядоченно организовать свой код.
Хороший PHP-код должен быть стандартизирован. Будь то установка правил именования для имен переменных и функций, стандартизация повторно используемых процессов, таких как операции с базами данных и обработка ошибок, или просто определение отступов в коде, эти стандартизации могут сделать код более читабельным.
Хороший PHP-код должен быть адаптивным. PHP имеет множество функций, таких как магические кавычки и короткие теги. Включение и выключение этих функций влияет на работу программы. Поэтому хороший программист должен добавлять в свой код соответствующие операторы, чтобы программа могла адаптироваться к среде.
Хороший PHP-код должен быть безопасным. Хотя PHP — эффективный и гибкий язык без фиксированной структуры, вопросы безопасности он оставляет программистам. Глубокое понимание потенциальных уязвимостей безопасности, таких как межсайтовый скриптинг (XSS), подделка межсайтовых запросов (CSRF), уязвимости внедрения кода, уязвимости цикла кодирования символов и т. д., имеет решающее значение для современных профессиональных программистов.
Когда кандидат отвечает на эти вопросы, я четко знаю, стоит ли мне нанимать его или ее. Конечно, иногда программисты не могут хорошо сформулировать проблему, и мы просим их провести PHP-тестирование. Многие вопросы теста на первый взгляд могут показаться очень простыми, но они также дают кандидатам возможность выразить себя, потому что, если внимательно присмотреться, можно обнаружить проблемы.
Следующий небольшой фрагмент «плохого» PHP-кода представляет собой упрощенный тестовый вопрос. Этот вопрос похож на вопрос: как следует оптимизировать этот код?
<?
echo("<p>Результаты поиска по запросу: " .
$_GET['запрос'] ".</p>");
?>
Основная проблема этого кода заключается в том, что он отображает данные, отправленные пользователем, непосредственно на веб-странице, создавая тем самым XSS-уязвимость. На самом деле есть много способов заполнить эту дыру. Итак, какой код нам нужен?
<?
echo("<p>Результаты поиска по запросу: " .
htmlspecialchars($_GET['query']) ".</p>");
?>
Это минимальное требование. XSS-уязвимость была заполнена функцией htmlspecialchars, блокирующей недопустимые символы.
<?php
если (isset($_GET['запрос']))
{
echo '<p>Результаты поиска по запросу: ',
htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>';
}
?>
Я хочу нанять именно тех людей, которые могут написать такой код.
<? был заменен на <?php, что более соответствует спецификациям XML.
Прежде чем выводить значение $_GET['query'], сначала определите, пусто ли оно.
Лишние круглые скобки в команде echo были удалены.
Строки заключаются в одинарные кавычки, что экономит время PHP на поиск заменяемых переменных в строке.
Используйте запятые вместо точек, чтобы сэкономить время эха.
Передайте флаг ENT_QUOTES в функцию htmlspecialchars, чтобы обеспечить экранирование одинарных кавычек. Хоть это и не самое главное, но это тоже хорошая привычка.
К сожалению, очень немногие программисты могут дать столь удовлетворительный ответ. Нам потребовалось 3 месяца, чтобы набрать программистов, которые нас устроили.
Итак, как бы вы ответили на вопрос, поставленный в начале статьи? Каковы, по вашему мнению, преимущества и недостатки PHP-кода? Какими еще качествами, по вашему мнению, должен обладать PHP-программист?
Источник этой статьи: http://www.yeeyan.com/articles/view/38585/18736 .
Исходная ссылка: http://www.sitepoint.com/blogs/2007/05/25/good-and-bad-php-code/