1. PHP / Говнокод #5578

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    public function getUserDeliveryList($deliverySettings) {
    	$obligatoryFieldsList = array('type', 'periods', 'freq');
    	foreach ($obligatoryFieldsList as $v){
    		if (!isset($deliverySettings[$v])){
    			return false;
    		} else {
    			$$v = $deliverySettings[$v];
    		}
    	}
    //	...
    }

    Обратил внимание после того, как в тексте метода обнаружил некоторое количество undefined (по мнению IDE) переменных.

    Запостил: quall, 08 Февраля 2011

    Комментарии (8) RSS

    • при копипасте часто образуются $$
      Ответить
      • Ну вообще-то тут иной смысл. Копипаста тут ни при чем - это так было задумано.

        Тут $$v волшебно превращается в переменные $type, $periods и $freq, которые в дальнейшем вполне активно используются.
        Ответить
        • я всегда инстинктивно избегал ссылочных переменных. Не зря, наверное - что бы вот не выкакался вот такой сабж
          Ответить
          • возможно это иногда бывает удобно? (в случае с функциями, например)...
            Ответить
    • Так и где тут проблема? То, что их загнали в массив, означает, что их со временем может стать и 10 и 20. А то, что переменные не определены, так $deliverySettings нужно инициализировать.
      Ответить
      • С $deliverySettings все окей, в дальнейшем неопределенными являются переменные $type, $periods и $freq, которые создаются таким вот экзотическим способом. Подобная техника напоминает использование метода extract, что ведет к весьма непрозрачному коду. Особенно, если учесть, что данный метод успешно занимает порядка 500 строк.
        Ну а насчет "на будущее", так этот код не менялся уже года полтора-два и предпосылок к разрастанию этого массива не видно.

        ПС: пишите прозрачный код, не юзайте магию
        Ответить

    Добавить комментарий