1. C++ / Говнокод #1765

    +65.5

    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
    16. 16
    17. 17
    ...
    switch( a )
    {
      case false:
      {
        a=true;
      };break;
      case true:
      {
        a=false;
      };break;
      default:
      {
        a=false;
      };break;
    };
    ...

    a - буллёвная переменная.

    Запостил: Говногость, 04 Сентября 2009

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

    • Не говорите что это баян.
      Кроме прочего тут лишние фигурные скобки и точки с запятой, видимо связаные с паскалевским прошлым.
      Ответить
      • А я тоже люблю ставить там скобки :-p
        Внутри них можно переменные объявлять (без скобок — нельзя).
        Ответить
      • И мне скобки нравятся...
        Ответить
      • А если переменные объявлять не нужно? Если что-то можно делать, то не значит, что это делать нужно. В данном примере скобки перегружают код.

        P. S. Хотя, a и булевская переменная, она может содержать не только 0 (false) и 1 (true) в памяти. Возможно, автор боялся этого. Но a = !a; прекрасно работает даже в таком случае.
        Ответить
        • >Хотя, a и булевская переменная, она может содержать не только 0 (false) и 1 (true) в памяти
          Ну тогда у него не верно написанно. Нужно было использовать
          default:
          {
          a=true;
          };break;
          Что-бы сохранить орегинальное поведение языка С++ в случае, если a!=0 и а!=1. Хотя может это так и задумывалось? Добавить нестандартное поведение.
          Ответить
    • Народ, а существует ли комичный рассказ про говнокодеров, с живыми примерами из реальной жизни? ну помимо "Как программисты строили бы дома"
      Ответить
      • >с живыми примерами из реальной жизни
        Я живой пример.
        Ответить
    • Дай бох такое никогда не писать.
      *Плюёт через левое плечо.*
      Ответить
    • ... а вы все не задумывались, какой именно тип, ведь тут он не указан. а если это "bool? a", тогда свич написан верно и дефолт выполница, если "а" = "null", и переменная "а" в таком случае может иметь 3 занчения (true, false, null)!
      Ответить
    • А если сделать перегрузку оператора ==? Притом на bool и ещё что-нибудь(например int)?
      Тогда действительно default: может выполниться...
      Ответить
    • bool может быть задефайнен как int, и вполне может принимать значения 12345 например.
      Ответить

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