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

    +48

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    //Функция проверки закачиваемого файла
    function fileNameCheck($file) {
    	if(preg_match("/[^a-z\d\-\._]/i", $file)) {
    		return true;
    	}
    	return false;
    }

    Приятно удивляет соответствие названия функции с её возвращаемым значением.

    Запостил: Edward, 22 Августа 2012

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

    • С её возвращаемым значением или с типом возвращаемых значений? Хотя я в обоих случаях не вижу ничего особо криминального.
      Ответить
      • По-моему функция с таким названием должна возвращать true ,если название файла прошло проверку и false в противном случае , тут наоборот.
        Ответить
        • А по-моему, как раз так, как в ОП - удобнее.
          Вообще, в данном случае это особенность архитектуры, или предположение автора, какое значение будет использоваться чаще, что бы реже использовать логическое отрицание.
          Ответить
          • Тогда ее лучше назвать не абстрактным fileNameCheck, который можно вертеть и так и этак, а конкретным isValidName/isInvalidName, с которым нет двусмысленностей.
            Ответить
            • Да. CheckFileName вместо Is... - так бы я назвал, если бы функция имела побочный эффект.

              void checkFileName(string fileName) { 
                m_bIsValid = isValidFileName(fileName);
                // return m_bIsValid;
              }
              Ответить
              • Дело в том, что check* всегда можно прочитать двуяко:

                checkSomethingForCorrectness
                checkSomethingForErrors

                Поэтому я и не люблю методы, имя которых начинается с check...
                Ответить
                • Согласен. Именно поэтому и void. Проверь, мол, там, и поступи соответственно.
                  Ответить
          • Типа проверили название файла - все ок , название невалидное.
            С постом про isValidName/isInvalidName полностью согласен
            Ответить
    • говно только в
      if(preg_match("/[^a-z\d\-\._]/i", $file)) {
      	return true;
      }
      return false;
      Ответить
    • return preg_match("/[^a-z\d\-\._]/i", $file)
      Ответить

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