Кто-то сказал, что когда ваш PHP-код и приложение используют глобальные переменные, тогда это должен быть код спагетти (я предполагаю это). Я много использую WordPress. Насколько я знаю, это лучшее, что можно найти рядом с отличным программным обеспечением PHP. И он использует множество глобальных переменных для взаимодействия между его компонентами.
Но забудь об этом, потому что, честно говоря, это единственное, что я знаю. Так что это полностью предвзято; D
Итак, мне просто интересно, Какова характеристика кода спагетти?
PS: Единственное, что я знаю, это WordPress. Так что, надеюсь, возможно, это поможет кому-то дать отличный ответ для тех, у кого мало опыта разработки полного веб-приложения на PHP (например, веб-сайта Stack Overflow).
goto
's, В сущности, недостаток дизайна и предусмотрительности, а также просто беспорядок из-под халатов. Это относится к любому языку, а не только к PHP.
для тех, у кого мало опыта разработки полного веб-приложения на PHP (например, веб-сайта «Переполнение стека»)
Просто FYI, но Stack Overflow не был разработан с PHP.
Хорошо, говоря о комментариях, которые вы опубликовали, объяснение очень простое. Использование global
оператора делает источник переменной неизвестным, как и другой конец лапши спагетти. Его можно определить везде. Поэтому, когда вы вызываете свою функцию, вы не представляете, какое значение имеет эта переменная. Вместо этого прямая передача переменной делает ее понятной и понятной:
function hello_testing($conditional_random) { if ($conditional_random)) { echo "foo is inside"; } }
Код спагетти имеет специфические характеристики, которые отличают его от простого плохого кода. Спагетти чрезвычайно сложна и неструктурирована, поэтому трудно следить за потоком процесса через программу. Это похоже на попытку распутать лапшу в миске болоньезе .
Вот почему в этом контексте часто приводятся GOTO
(ужасное слово!): Оператор GOTO
передает управление другому произвольно определенному местоположению в базе кода. Большинство языков программирования имеют команды, которые можно злоупотреблять, чтобы имитировать поведение стиля goto
; например, использование исключений для реализации обычной бизнес-логики, а не для обработки ошибок.
Глобальные переменные вносят вклад в код спагетти, поскольку значения присваиваются за пределами области действия текущего программного блока. Это может затруднить определение, где в базе кода переменная установлена на заданное значение (или действительно ли оно установлено на любое значение вообще).
Кстати, использование goto
не означает, что программа является спагетти. Вполне возможно писать четкий, хорошо структурированный код с использованием goto
, просто требуется много самодисциплины, чтобы не злоупотреблять своей гибкостью. Современные языки программирования стали ненужными и нежелательными.
WordPress – это самый большой фрагмент кода спагетти PHP, который я видел. Существует шокирующее сочетание PHP, HTML, JavaScript и всех вещей между всеми сосредоточенными в одних и тех же файлах. Если вам нужен еще один пример кода спагетти, посмотрите на osCommerce или Zen Cart .
На самом деле, осмелюсь сказать, что подавляющее большинство PHP-приложений с открытым исходным кодом – довольно шокирующие примеры того, как программировать на PHP. Если вы хотите посмотреть на хороший структурированный пример (то есть не спагетти), посмотрите на структуру Yii или Zend Framework . Структуры, такие как CodeIgniter и Kohana , хотя и не спагетти, не очень хорошие примеры того, как структурировать вещи на PHP 5, поскольку они используют многие функции, используемые в PHP 4, просто потому, что не было лучшего способа сделать их до PHP 5 (например , используя наследование на основе пути вместо наследования истинного объекта).
Если вы хотите, чтобы разумный хороший пример процедурного программирования сделал правильный взгляд на Drupal . Это может быть не самое эффективное исполняемое приложение PHP из-за сложности, но оно, несомненно, превосходит WordPress, и вы можете делать с ним много общего.