Каковы характеристики запутанного кода?

Кто-то сказал, что, когда Ваш код PHP и приложение используют глобальные переменные затем, это должен быть запутанный код (я принимаю это). Я использую WordPress много. Насколько я знаю, это - лучшая вещь около большого программного обеспечения PHP. И это использует много глобальных переменных для взаимодействия между его компонентами.

Но забудьте об этом, потому что откровенно говоря, это - единственная вещь, которую я знаю. Таким образом, это полностью смещается; D

Так, мне просто любопытно, Какова характеристика запутанного кода?

PS: единственной вещью, которую я знаю, является WordPress. Так, надо надеяться, возможно, это поможет кому-то дать большой ответ для кого-то, у кого есть небольшой опыт в разработке полного веб-приложения на PHP (например, веб-сайт Переполнения стека).

12
задан Peter Mortensen 14 May 2011 в 11:20
поделиться

3 ответа

  • Отсутствие модульности (все в одном файле, классе, модуле, пространстве имен, пакете или любом другом языке, который используется для обеспечения модульности),
  • Множество goto ,
  • Плохая организация,
  • Нет четкого разделения функций и целей. (То есть всеобъемлющие классы или функции)
  • Длинные функции.
  • Плохое название.
  • Нет единого стиля кодирования.
  • Отсутствует четкий интерфейсный контракт между реализацией и клиентами кода. (То есть не указывается, какие входы, выходы, предварительные и постусловия функций)
  • Чрезмерная зависимость от внутренних компонентов структур данных с небольшой абстракцией.
  • Функции случайным образом переставляют / изменяют глобальное состояние без какого-либо упоминания об этом в документации.
  • Отсутствие комментариев или документации нетривиального кода.
  • Код сложнее, чем должен быть.
  • Отсутствие повторного использования. (много дублированного кода, он же copypasta )
  • Никакой проверки или модульного тестирования (работает на веру).
  • Магические числа.

По сути, недостаток дизайна и предусмотрительности, и просто мешанина из хаков, сложенных воедино. Это применимо к любому языку, а не только к PHP.

для тех, у кого мало опыта в разработке полноценных веб-приложений на PHP (например, веб-сайт Stack Overflow).

Просто к сведению, но Stack Overflow не был разработан с PHP.

22
ответ дан 2 December 2019 в 04:08
поделиться

Что ж, если говорить о комментарии, который вы опубликовали, объяснение очень простое. Использование оператора global делает источник переменной неизвестным, как другой конец макаронной лапши. Его можно определить везде. Итак, когда вы вызываете свою функцию, вы не знаете, какое значение имеет эта переменная. Вместо этого прямая передача переменной делает его ясным и понятным:

function hello_testing($conditional_random) {
  if ($conditional_random)) {
      echo "foo is inside";  
  }
}

P.S. http://en.wikipedia.org/wiki/Spaghetti_code

7
ответ дан 2 December 2019 в 04:08
поделиться

Спагетти-код имеет определенные характеристики, которые отличают его от простого плохого кода. Спагетти чрезвычайно сложны и неструктурированы, поэтому сложно проследить ход процесса в программе. Это похоже на попытку распутать лапшу в миске с болоньезе .

Вот почему операторы GOTO (ужасное слово!) Часто цитируются в этом контексте: оператор GOTO передает управление в другое произвольно определенное место в кодовой базе. В большинстве языков программирования есть команды, которыми можно злоупотреблять для имитации поведения стиля goto ; например, использование исключений для реализации обычной бизнес-логики, а не для обработки ошибок.

Глобальные переменные вносят свой вклад в спагетти-код, потому что значения присваиваются за пределами области действия текущего программного модуля. Это может затруднить определение того, где в базе кода переменная установлена ​​на заданное значение (или действительно ли она вообще установлена ​​на какое-либо значение).

Между прочим, использование операторов goto не означает, что программа спагетти. Вполне возможно написать ясный, хорошо структурированный код, используя goto , просто требуется большая самодисциплина, чтобы не злоупотреблять его гибкостью. Современные языки программирования сделали его использование ненужным и нежелательным.

5
ответ дан 2 December 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: