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

    +72

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    function valid_gender($str){
    	switch($str){
    		case "male":
    		return "male";
    		break;
    
    		case "female":
    		return "female";
    		break;
    
    		default:
    		return "male";
    		break;
    	}
    }

    Ультимативная проверка переменной на половую принадлежность. Also return'ам нынче доверия нет!

    Запостил: swiftfooth, 16 Июля 2012

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

    • Есть ли жизнь после return'a?
      Ответить
      • Нету, потому что оператор return всегда производит выход из функции.
        Ответить
        • А мы их Continuation Passing Style'ом по шее.
          Ответить
        • Только goto: только хардкор!
          Ответить
          • показать все, что скрытоИспользование goto не рекомендуется, потому что резко снижает читаемость кода.
            Ответить
            • > резко снижает читаемость кода
              Ой не всегда, ой не всегда...

              Тот же выход из трех циклов (сомнительная конструкция, но все же) с goto смотрится намного читабельнее, чем флагоебство.

              На си переход в конец функции, где расположено освобождение ресурсов тоже читается легче, нежели лесенка вложенных ифов или освобождение пачки ресурсов на каждом return.

              Ну а так да, согласен, в случае бездумного использования goto только портит код.
              Ответить
              • Сипроблемы.

                В Java для первого есть break с меткой, для второго - finally.
                Ответить
                • > В Java для первого есть break с меткой, для второго - finally
                  Ну да, поэтому там и нет goto.
                  Ответить
            • Уже клинит всё это мозгоёбство с goto.
              Что, например, в этом коде не понятно? Он читается плохо? https://github.com/torvalds/linux/blob/master/drivers/oprofile/oprof.c
              Ответить
          • Вы так говорите, как будто goto это что-то плохое...
            Ответить
    • Раз не женщина, значит мужчина? Так это проще можно было записать.
      Ответить
      • Да, потому что все люди - либо женщины, либо мужчины. Экзотику не считаем.
        Ответить
        • А если через 10 лет добавят еще 5 полов? Переписывать весь код?
          Ответить
        • > Да, потому что все люди - либо женщины, либо мужчины.

          ЛГБТ-движение при виде столь бескомпромиссного заявления разрывается от хохота.
          Ответить
      • Это можно было вооще не писать.
        Вместо valid_gender($str) писать $str
        Ответить
    • case "male":
          ...
          break;
          // Не мужчина...
      case "female":
          ...
          break;
          // ... и не женщина...
      default:
          return "male"; // ... так будь мужиком, блеать!
      }
      Ответить
    • Может чел придумал функцию, чтобы весь код не переписывать.
      Ответить
    • Я так думаю просто автор функции не дочитал мануал по языку и не знал, что можно break заменить return, а в секции default break вообще можно не писать. Не говно код, так себе грязненький код :)
      Ответить
    • а что насчет единой точки возврата?
      Ответить
      • Единая точка возврата... предмет тысяч и тысяч религиозных войн...
        Вернемся ли мы все в одну точку, или каждый покинет эту функцию своим путем? Что же ждет нас за точкой возврата...
        Ответить
      • А если вернуться к нашим баранам - единая точка возврата это конечно хорошо и наглядно, но не надо из нее делать догму. Для небольших функций несколько return, зачастую, читаются лучше, нежели флагоёбство/большие уровни вложенности/разбиение на несколько еще более мелких функций (нужное подчеркнуть). Тут та же история что и с goto - абузить не стоит, но и полностью отказываться - тоже.
        Ответить
        • s/абузить не стоит/абузить return из середины функции не стоит/
          Ответить
    • так не проще ли
      function validPol($p){
      if ($p == 'female')
      return 'female';
      else return 'male';
      }
      Ответить
      • Возможно автор кода делает игру и помимо женщин и мужчин будут еще к примеру - гермафродиты :) Думает на будущее - молодец
        Ответить
      • тогда уж так
        function validPol($p){
            return ($p == 'female') ? 'female' : 'male';
        }
        Ответить
        • тогда уж так:
          function validPol($p){
              return ($p == 'female') ? $p : 'male';
          }
          писанины меньше
          а еще лучше вынести в константы
          Ответить
          • Сокращённую форму тернарного не запилили?
            Ответить
            • пардон, я уже не помню, в каких языках она есть, в каких нет, поэтому на всяк делаю длинную
              Ответить
      • > validPol
        Энд потолок.
        Ответить
    • если есть яйца и нет груди:
      ..вернуть "мужик"
      если нет яиц и есть грудь:
      ..вернуть "баба"
      если есть яйца и есть грудь:
      ..вернуть "членодевка"
      если нет яиц и нет груди:
      ..вернуть "ну это уже тупость"
      Ответить
      • >если нет яиц и нет груди

        Это доска
        Ответить
    • Обратимся к классике говнокода

      [code=php]
      function valid_gender($str)
      {
      if (strlen($str)==6)
      return "female";
      else
      return "male";
      }
      [code]
      Ответить

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