Си диез / Говнокод #5863 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
static public int IIF(bool condition, int a, int b)
        {
            int x = 0;
            if (condition)
            {
                x = a;
            }
            else
            {
                x = b;
            }
            return x;
        }

        static public bool IIF(bool condition, bool a, bool b)
        {
            bool x = false;
            if (condition)
            {
                x = a;
            }
            else
            {
                x = b;
            }
            return x;
        }

        static public Single IIF(bool condition, Single a, Single b)
        {
            float x = 0;
            if (condition)
            {
                x = a;
            }
            else
            {
                x = b;
            }
            return x;
        }

        static public Double IIF(bool condition, double a, double b)
        {
            double x = 0;
            if (condition)
            {
                x = a;
            }
            else
            {
                x = b;
            }
            return x;
        }

        static public decimal IIF(bool condition, decimal a, decimal b)
        {
            decimal x = 0;
            if (condition)
            {
                x = a;
            }
            else
            {
                x = b;
            }
            return x;
        }

Запостил: inser inser, (Updated )

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

  • пропустил ещё кусок кода:
    static public String IIF(bool condition, String a, String b)
            {
                String x = String.Empty;
                if (condition)
                {
                    x = a;
                }
                else
                {
                    x = b;
                }
                return x;
            }
    Ответить
  • static public int IWHILE(bool condition, int a)
            {
                int x = 0;
                while (condition)
                {
                    x = a;
                }
                return x;
            }
    Ответить
  • Ну шаблонов чел не знает. А, они же в срешётке на этапе выполнения раскрываются, да, тут же скорость важна.

    А в C# можно задавать функции с ленивыми операторами?
    Ответить
    • Что за ленивые операторы? Т.е. перегрузка операторов? Если да, то можно.

      Если уж так нужны эти функции, то из них можно записать в виде:
      return condition ? a : b;

      Другой вопрос - зачем вообще нужны эти функции???
      Ответить
      • Нет. Ленивые операторы - это те, которые считают только то, что надо.
        Например
        float GetVal(index: integer; a: array of lazy float) {
        return a[index];
        };

        x := GetVal(2, {sin(x), cos(x), tg(x), ctg(x)});
        вычислится только нужный аргумент
        Ответить
    • Можно передавать Lazy<T>

      var foo = Lazy.New(() => {
          // тут к примеру лезем в базу и считаем чего нибудь
        });
      
      void Bar(bool flag, Lazy<int> argument) 
      {
        if (flag)
        {
             Console.Write(argument)
        }
      }


      Но для оригинального говнокода достаточно ? или ??
      Ответить
      • > человек
        макак и выходец с VB, 80% целевой аудитории до-диеза

        а вот в паскале такое не... WAIT OH SHI-
        function IfThen(AValue: Boolean;
        		const ATrue: Integer;
        		const AFalse: Integer = 0): Integer; overload;
        Ответить
  • Дельфист писал однозначно. Это там стандартная практика была. Народ в большинстве не понимал разницы между IIF(x, y, z) и x ? y : z
    Ответить
      • В Delphi не было ? и ??
        Народ писал самопальные IIF, как вышеприведенный товарищ.
        И утверждали что это то же самое. Поэтому и уверен что это дельфист.
        Ответить
        • по сути, конечно, почти тоже самое... Но только почти... Просто, куда им до таких материй, что бы понять отличие
          Ответить
          • По сути это разные вещи. А то потом удивлялись неожиданным результатам кода вида

            IIF (x = nil, y.Foo(), x.Bar())
            Ответить
            • угу, все значения пытаются вычисляться ДО iif'а 🙂
              конечно, можно изобретать лучшую эмуляцию этой языковой конструкции, но это как-то только усложняет жизнь 🙂
              Ответить
          • iif - нативная конструкция бейсика
            iif - хуита
            ----------------------------------------------------
            нативная конструкция бейсика - хуита
            Ответить
  • Ну если так нужен метод, то мог бы и написать один метод с двумя параметрами типа object 🙂
    Ответить
    • Лучше шаблонами
      public static T IIF<T>(bool condition, T a, T b) where T : IConvertible
      {
          T x = default(T);
          if(condition)
          {
              x = a;
          } else
          {
              x = b;
          }
          return x;
      }
      Ответить
      • public static T LazyIF<T>(bool condition, Func<T> a, Func<T> b) where T : IConvertible
        {
            T x = default(T);
            if(condition)
            {
                x = a;
            } else
            {
                x = b;
            }
            return x;
        }
        Ответить
  • - Ё моё! - не выдержал я. - Так вот почему тебя Клевером величают.
    Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8