PHP - Функционируйте в Функции. Хороший или плохой?

Вы знаете, как поддержка хороших Моно 2,0 предварительных просмотров для Windows Forms 2.0?

От немного, что я играл с ним, это казалось относительно завершенным и почти применимым. Это просто не вполне выглядело правильным в некоторых местах и все еще немного как попало полно. Это поразило меня, что это работало, а также это сделало с некоторыми нашими формами, хотя честно.

18
задан Roch 9 September 2009 в 10:24
поделиться

4 ответа

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

Как сказал Дональд Кнут:

Мы должны забыть о небольших эффективности, говорят около 97% время: преждевременная оптимизация - это корень всех зол.

Это совершенно верно, в данной ситуации; -)

23
ответ дан 30 November 2019 в 06:35
поделиться

Против этого есть несколько причин:

  • Документация внутренней функции не будет проанализирована.
  • Внутренняя функция существует только после вызова внешней функции (но даже вне объем внешней функции впоследствии)
  • Трудно читать (потому что это нечасто встречается)
  • Единственное преимущество, о котором я мог думать, - это определение обратного вызова, но это лучше сделать с помощью create_function ( ) ( ) или закрытие (> = PHP5.3 )
  • Если вас беспокоит производительность на этом уровне, вам действительно следует использовать другой язык
12
ответ дан 30 November 2019 в 06:35
поделиться

Это плохая практика. Могут произойти не только все странные вещи, и вы потеряете слишком много времени, пытаясь отладить их, но и код станет более запутанным.

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

Очень распространенный способ - определить функцию вне этой функции и вызвать ее внутри.

7
ответ дан 30 November 2019 в 06:35
поделиться

Это зависит от ситуации, так как это может быть более желательно, чем использование create_function () . Однако вы должны знать, что функция, которая создается внутри функции, имеет глобальную область видимости.

function creator() {

    function inside() {

        echo "hi.";
    }
}

creator();
inside();

Будет выведено «привет». даже несмотря на то, что функция inside () была создана «внутри» функции-создателя. Поэтому, если у вас есть функция в цикле, который создает функцию, вам нужно проверить, существует ли функция, иначе это вызовет ошибку функция существует после первого цикла.

даже несмотря на то, что функция inside () была создана «внутри» функции-создателя. Поэтому, если у вас есть функция в цикле, который создает функцию, вам нужно проверить, существует ли функция, иначе это вызовет ошибку функция существует после первого цикла.

даже несмотря на то, что функция inside () была создана «внутри» функции-создателя. Поэтому, если у вас есть функция в цикле, который создает функцию, вам нужно проверить, существует ли функция, иначе это вызовет ошибку функция существует после первого цикла.

6
ответ дан 30 November 2019 в 06:35
поделиться
Другие вопросы по тегам:

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