1. VisualBasic / Говнокод #3364

    −87

    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
    ' Это первый конструктор:
    
    Public Sub New(ByVal ParmName0 As String, ByVal ParmValue0 As Object)
      PRM(0) = New SqlParameter(ParmName0, ParmValue0)
      CMD.Parameters.Add(PRM(0))
    End Sub
    
    ' ... 20-30 конструкторов спустя:
    
    Public Sub New(ByVal ParmName0 As String, ByVal ParmValue0 As Object, ByVal ParmName1 As String, ByVal ParmValue1 As Object, ByVal ParmName2 As String, ByVal ParmValue2 As Object, ByVal ParmName3 As String, ByVal ParmValue3 As Object, ByVal ParmName4 As String, ByVal ParmValue4 As Object, ByVal ParmName5 As String, ByVal ParmValue5 As Object, ByVal ParmName6 As String, ByVal ParmValue6 As Object, ByVal ParmName7 As String, ByVal ParmValue7 As Object, ByVal ParmName8 As String, ByVal ParmValue8 As Object, ByVal ParmName9 As String, ByVal ParmValue9 As Object, ByVal ParmName10 As String, ByVal ParmValue10 As Object, ByVal ParmName11 As String, ByVal ParmValue11 As Object, ByVal ParmName12 As String, ByVal ParmValue12 As Object, ByVal ParmName13 As String, ByVal ParmValue13 As Object, ByVal ParmName14 As String, ByVal ParmValue14 As Object, ByVal ParmName15 As String, ByVal ParmValue15 As Object, ByVal ParmName16 As String, ByVal ParmValue16 As Object, ByVal ParmName17 As String, ByVal ParmValue17 As Object, ByVal ParmName18 As String, ByVal ParmValue18 As Object, ByVal ParmName19 As String, ByVal ParmValue19 As Object, ByVal ParmName20 As String, ByVal ParmValue20 As Object, ByVal ParmName21 As String, ByVal ParmValue21 As Object, ByVal ParmName22 As String, ByVal ParmValue22 As Object, ByVal ParmName23 As String, ByVal ParmValue23 As Object, ByVal ParmName24 As String, ByVal ParmValue24 As Object, ByVal ParmName25 As String, ByVal ParmValue25 As Object, ByVal ParmName26 As String, ByVal ParmValue26 As Object, ByVal ParmName27 As String, ByVal ParmValue27 As Object, ByVal ParmName28 As String, ByVal ParmValue28 As Object, ByVal ParmName29 As String, ByVal ParmValue29 As Object)
        Call Me.New(ParmName0, ParmValue0, ParmName1, ParmValue1, ParmName2, ParmValue2, ParmName3, ParmValue3, ParmName4, ParmValue4, ParmName5, ParmValue5, ParmName6, ParmValue6, ParmName7, ParmValue7, ParmName8, ParmValue8, ParmName9, ParmValue9, ParmName10, ParmValue10, ParmName11, ParmValue11, ParmName12, ParmValue12, ParmName13, ParmValue13, ParmName14, ParmValue14, ParmName15, ParmValue15, ParmName16, ParmValue16, ParmName17, ParmValue17, ParmName18, ParmValue18, ParmName19, ParmValue19, ParmName20, ParmValue20, ParmName21, ParmValue21, ParmName22, ParmValue22, ParmName23, ParmValue23, ParmName24, ParmValue24, ParmName25, ParmValue25, ParmName26, ParmValue26, ParmName27, ParmValue27, ParmName28, ParmValue28)
       PRM(29) = New SqlParameter(ParmName29, ParmValue29)
       CMD.Parameters.Add(PRM(29))
    End Sub

    Перегрузка по-говнокодерски. Сие великолепие автор комментирует так:

    "Одновременно для всяких начинающих, которые прослушали лекции про типы данных ParamArray - разъясняю, что типы данных идут вперемешку - строка/обьект - пример вызова с формы выложен выше. И ParamArray здесь приведет к необходимости преобразования строки в обьект. Что во-первых неэффективно и ненужно, а во вторых отключит проверку типа параметра и легко можно будет пропустить название параметра и указать вместо него собственно значение параметра."

    "И наконец, при отсутствии такого полиморфного конструктора, принимающего от нуля до 30 параметров - эта функция и вовсе утрачивает смысл. Ибо тридцать строк на форме для одного обращения в базу? Это может показаться приемлимым только тем, кто вообще никогда не занимался программированием."

    Запостил: Webkill, 01 Июня 2010

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

    • В общем, автор имел в виду то, что адекватный человек сделал бы так:

      public struct KeyValuePair
      {
            private string name;
            private object value;
      
           public string Name { get { return name; } }
           public object Value { get { return value; } }
      
          public KeyValuePair(string name, object value)
          {
                  this.name = name;
                  this.value  = value;
          }
      }
      
       /* ... */
      
      public MyObject(params KeyValuePair[] keyValuePairs) { /* .. */ }


      Автору 48 лет... ~ 20-30 лет программирования на визуалбейсике дали знать своё :)
      Ответить
      • Адекватный - это ты?
        Ответить
        • У тебя есть другой вариант?
          Ответить
          • Нет, нету.
            Ответить
            • Что за меня отвечаешь? Теперь я свой точно предлагать не буду, раз такой троль. Пользуйся своим и страдай.
              Ответить
              • Ну ладно, офицеально приношу свои извинения. Скажи свой вариант.
                Ответить
              • Вы бы зарегались... Хотя бы как какой-нибудь "guest0", сразу стало бы проще и вам и окружающим ;)
                Ответить
      • >>public MyObject(params KeyValuePair[] keyValuePairs) { /* .. */ }

        а не проще ли заюзать Map или Dictionary (не помню как там в шарпе зовётся оная структура данных) ?
        Ответить
        • Автор как бы хочет лёгкость вызова и отсутствие оверхеда, ср.:

          var dic = new Dictionary<string, object>();
          dic["a"] = "b";
          dic["b"] = "c";
          
          var obj = new MyObject(dic);


          var obj = new MyObject(dic, new KV("a", "b"), new KV("b", "c"))
          Ответить
          • плюс возможно автору параметры нужно уметь брать по индексу, а ссловари не умеют по индексу и не гарантируют последовательность вставки
            Ответить
          • второй пример следует читать:

            var obj = new MyObject(new KV("a", "b"), new KV("b", "c"))


            лишний аргумент затесался
            Ответить
    • ОО, вебкилл!!! Где здесь поне?
      Ответить
      • `T",.`-,
                                                             '8, :.
                                                      `""`oooob."T,.
                                                    ,-`".)O;8:doob.'-.
                                             ,..`'.'' -dP()d8O8Yo8:,..`,
                                           -o8b-     ,..)doOO8:':o; `Y8.`,
                                          ,..bo.,.....)OOO888o' :oO.  ".  `-.
                                        , "`"d....88OOOOO8O88o  :O8o;.    ;;,b
                                       ,dOOOOO""""""""O88888o:  :O88Oo.;:o888d
                                       ""888Ob...,-- :o88O88o:. :o'"""""""Y8OP
                                       d8888.....,.. :o8OO888:: ::
                                         ,dd8".  ,-)do8O8o:"""; :::
                                         -"",`(;O"KdOo::        :::
                                            .doo:::"""::  :.    'o:
                ,..            .;ooooooo..o:"""""     ::;. ::;.  'o.
           ,, "'    ` ..   .d;o:"""'                  ::o:;::o::  :;
           d,         , ..ooo::;                      ::oo:;::o"'.:o
          ,d'.       :OOOOO8Oo::" '.. .               ::o8Ooo:;  ;o:
          ,8:   o::oO` 88888OOo:::  o8O8Oo:::;;     ,;:oO88OOo;  '
         ,YP  , :;:O:  *888o::::  :8888Ooo::::::::::oo888888o;. ,
         dPY:  :o8O     (|)888O:O:;  O8888888888OOOO888"" Y8o:O88o; ,
        ,' O:  'ob`      "8888888Oo;;o8888888888888'"'     `8OO:.`OOb .
        '  Y:  ,:o:       `8O88888OOoo"""""""""""'           `OOob`Y8b`
           ::  ';o:        `8O88o:oOoP                       `8Oo `YO.
           `:   Oo:         `888O::oP                         88O  :OY
            :o; 8oP         :888o::P                          do:  8O:
           ,ooO:8O'       ,d8888o:O'                         dOo   ;:.
           ;O8odo'        88888O:o'                          do::  oo.:
         ''-'`"            d:O8oK  -hrr-                   dOOo'  :o":
                           `8O:;7b,.                       `"8'     Y:
                             `Oo; 8:.
                                Y8bod.
        Ответить
    • аааааа)
      вебкил

      неиначе как в зоопарке деньб открытых дверей
      Ответить
    • ААаа ГОВНОКОД ВЕБКИЛЛА!!!!!1111АПАСНАСТЬАПАСНАСТЬ
      Ответить

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