1. Go / Говнокод #26841

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    switch platform {
    case "Azure":
    	heartbeat = "500"
    default:
    	heartbeat = "100"
    }

    Инфраструктуру для мимосервисов чай тоже люди пишут.

    https://github.com/openshift/cluster-etcd-operator/blob/release-4.5/pkg/cmd/render/env.go#L52-L81

    [size=8]там еще и табы[/size]

    Запостил: Fike, 04 Августа 2020

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

    • break забыл
      Или в Goвне не надо?
      Ответить
      • в современных нормальных языках брейка уже не надо, обычно

        всё равно небрякнутые свитчи руками пишут только сишники уровня Даффа
        Типичный говнокодер для этого слишком туп
        Ответить
        • Да, теперь, наоборот

          fallthrough
          Ответить
        • Так не надо было «switch» называть. Все уже привыкли.
          Ответить
          • ну может они с младых соплей го пишут

            Вроде, авторы го так и говорили: мы не можем позволить себе брать только тех, кто осилил кресты, нам нужны и тупые питушки тоже, сделаем для них язык настолько тупой, чтобы кто угодно справился
            Ответить
            • А отсутствие обязательной точки с запятой, видимо, снизило порог вхождения ещё на 10 пунктов IQ
              Ответить
              • Что там говорилось про сахар скобок и рачок точек с запятой?
                Ответить
            • Ну вообще Иньо прав. Или делай конструкцию как у всех или называй по-другому. Иначе потом эти макаки придут в сишку и обосрутся на первом же свиче. Да и у сишников постоянные барханы от созерцания такого кода.
              Ответить
              • Не придут они в сишку, они тупые
                Ответить
                • Ну вон Роман, бедняга, пишет на этом ГОвне. Представь как ему каждый раз видеть свичи без бряка после стольких лет в крестах.
                  Ответить
                  • Рома вроде уже не в г., не?
                    Ответить
                    • Так точно:

                      https://facebook.com/roman.kashitsyn
                      Ответить
                      • Гуглил Романа, наткнулся на фишинговый «Хабр»: http://radiant-escarpment-88463.herokuapp.com/ru/users/roman_kashitsyn/
                        Ответить
                  • В последний раз, когда Роман попадал на радары, он писал на Расте
                    Ответить
                    • Я помню, что он как-то сказал, что гошку использует вместо скриптушни, бо батарейки хорошие и стат типизация
                      Ответить
              • Всё правильно сделали.

                Mandatory break это блажь, которая нужна в каком-то особо малом количестве случаев (попробуйте опровергнуть).

                Портить новые языки с самого появления только потому, что так когда-то сделали в бомжественной, это какая-то дичь.

                p.s. от схемы у сишников вообще наверное коматоз наступит: case есть, а свитча нету!
                Ответить
                • Дык не надо делать fallthrough! Пусть будет ошибка конпеляции если ты бряк забудешь написать. В шарпе так и сделали, емнип.

                  Ну или назови конструкцию по-другому. case вместо switch как пасцале например.
                  Ответить
                  • В коко when, там пераименовали
                    Ответить
                  • Если я не пишу на няшной или пишу 0.001% времени, а пишу на языке, где break и fallthrough обязательно ставить не надо, то мне профит.

                    Не знаю, как там гошники разделяют свою работу по языкам, конечно. Что, много таких, которые до обеда на си, после на goвне?
                    Ответить
                  • > В шарпе так и сделали

                    - шарп язык хороший, но после всяких свифтов и он уже кажется архаикой
                    Ответить
                    • угу
                      Вербозности много, и нулсейфети недавно завезли только.
                      Ответить
                      • Зато аннотации.

                        И дженерики вроде более гибкие.

                        Идеала, увы, нет.

                        Конечно, умные люди давно придумали лишп, там можно сделать всё, что хочешь, но я слишком ленив и туп для лишпа каждый день, например
                        Ответить
                        • >Зато аннотации.
                          Атрибуты вроде бы они там, это в йаже -- аннотации. Но смысл тот же.
                          Можно делать метамагию.

                          >дже
                          Да, вроде бы с обобщенным программированием у Го беда.
                          Ответить
                          • Я вообще со свифтом сравнивал, сорян.

                            В го там да, любители рекурсивно повходить в одну реку
                            Ответить
                • Ну пхп же обсирают за необычный приоритет тернарника:
                  a ? b : c ? d : e
                  Ответить
                  • Есть в php хоть что-то, за что его не обсирают?
                    Ответить
                    • --Дорогой, есть во мне хоть что-то хорошее?
                      --Было. Я вынул.
                      (C)

                      В пыхе можно указывать какие переменные захватит кложа. В других мейнстримовых языках (кроме С++) -- нельзя.
                      Ответить
                      • А в чём профит?

                        В Свифте можно указать, какие reftype пельменные захватывать по слабым ссылкам. И ещё можно явно указывать, что valuetype нужно скопировать. Этого недостаточно?
                        Ответить
                        • Значит, в сифте тоже к

                          Профит в том, что случайно не хватанеш лишка
                          Ответить
                  • у тебя неправильный код, починил
                    $a ? $b : $c ? $d : $e;
                    Ответить
          • switch2 platform {
            case "Azure":
            	heartbeat = "500"
            default:
            	heartbeat = "100"
            }
            Ответить
        • Имхо, это хуйня и сделали её Goвнюки.

          И правильно inho пишет. Полностью поддерживаю.

          Сделайте match с паттерн-матчингом, не уродуйте оператор switch.

          Кстати Сишному комитету тоже неплохо было бы, не заниматься хуйнёй, а завезти switch 2.0 c паттерн-матчингом и возвратом значения. Как универсальную альтернативу ifу, тернарнику и свищу.
          Ответить
          • >Сделайте match с паттерн-матчингом

            Полюби котлин
            enum class Foo {
                SPAM, EGGS
            }
            
            sealed class Creature<T> {
                abstract val id: T
            
                class Dog : Creature<String>() {
                    override val id = "Bobik"
                }
            
                class Robot : Creature<Int>() {
                    override val id = 42
                    val vendor = "Robotics"
                }
            }
            
            fun call(creature: Creature<*>, foo: Foo) {
            
                when (foo) {
                    Foo.SPAM -> println("A")
                    Foo.EGGS -> println("B")
                }
            
                when (creature) {
                    is Creature.Dog -> println("Hello, ${creature.id}")
                    is Creature.Robot -> println("Robot from ${creature.vendor} is even: ${creature.id % 2 == 0}")
                }
            }
            Ответить
            • Такое дохуя где есть. И даже не такое.

              Даже в Жабу, емнип завезли.

              Но я хочу чтобы в Сишке было.
              Чтобы не было питушни с неявными булеанами, а был нормальный матчинг NULL по _
              Lal[2] ka={NULL, lal()};
              
              //null pattern match
              match(ka){
                   case {_,_} ->  ... //both is null
                   case {_,LAL} ->  ... //first is null, 2nd is lal
                   case {LAL,_} ->  ... //first is lal, 2nd is null
              }
              
              //better ternary
              int k = 3;
              int x = match (k){
                  case 2 -> 7
                  case 3 -> { koko(); break 42; }
                  default -> 1488
              }
              Ответить
              • Да, было бы хорошо.

                В груви есть (видимо из руби) вот такая штука
                switch (val) {
                        case ~/^Switch.*Groovy$/:
                            result = 'Pattern match'
                            break
                        case BigInteger:
                            result = 'Class isInstance'
                            break
                        case 60..90:
                            result = 'Range contains'
                            break
                        case [21, 'test', 9.12]:
                            result = 'List contains'
                            break
                        case 42.056:
                            result = 'Object equals'
                            break
                        case { it instanceof Integer && it < 50 }:
                            result = 'Closure boolean'
                            break
                        default:
                            result = 'Default'
                            break
                    }


                Брейк конечно говно, но зато есть ренджи, и проверка по лямбде, и по листу.
                Ответить
                • >case 60..90
                  Да. Паскаль хуйни не посоветует.

                  >case 1, 3, 42:
                  Да

                  >case "text":
                  Сравнение null-terminated указателей тоже можно было бы сделать.

                  >case 42.056:
                  Нет. Патаму что это плавающий питух, который априори говно. И чем вы быстрее это поймёте, тем будет лучше.

                  >case { it instanceof Integer && it < 50 }:
                  Невозможно. В Сишке нет инфы о типах в рантайме.
                  Точнее возможно, но для этого нужно немного расширить другие части языка.
                  Ответить
                  • имелась ввиду лямблия. Проверить тип, ясно дело, нельзя)
                    Ответить
                    • Ля́мблии, или гиа́рдии, или жиа́рдии — род жгутиковых протистов из отряда дипломонадид.
                      Паразитируют в тонком кишечнике человека и многих других млекопитающих, а также птиц.
                      Один из видов этого рода — кишечная лямблия — возбудители лямблиоза человека.
                      Ответить
                      • Ну я про анонимную функицию же.

                        Впрочем, мне хватило бы и указателя на функцию
                        Ответить
                  • ну так пусть выполняется компайл-тайм
                    Ответить
              • Вообще, насколько я знаю, underscore это обычно для wildcard, потому null pattern тут выглядит неожиданным
                Ответить
                • Писал ночью и ошибся. Верно замечено что «_» — это не пустое (NULL), а произвольное значение.

                  Хотя подчеркивание тоже говно. Т.к. может быть переменная с таким именем.

                  Потому нужно вообще отстутствие чего либо:
                  case [1,] //matches [1,2] [1,3] [1,4]
                  case [,2] //matches [1,2] [2,2] [3,2]
                  case [1,2] //matches [1,2]


                  Особенно важно это для структур. Т.к. в Сишке нету поистине царского их сравнения (memcpy).

                  И только компилятору ведомы паддинги. А с помощью матчинга можно будет оптимально сравнивать структуры полностью или по отдельным полям.
                  struct Koko {
                     char  lalka[2];
                      int   bagor;
                  };
                  
                  Koko k0 = ...
                  Koko k1 = {.lalka="ab", .bagor=42};
                   
                  match(k0){
                      case k1            -> ... //all fields equal
                      case {.lalka="ab"} -> ... //compare lalka only
                      case {.bagor=42}   -> ... //compare bagor only
                  }
                  Ответить
                  • Совсем без символа плохо.

                    case по 5 полям:
                    case [1,,,4]


                    какое-то буэ
                    Ответить
                    • Ну нормально

                      Всяко лучше чем:
                      if (arr[0]==1 && arr[3]==4)

                      Ответить
                      • Та не, я за

                        case [1, *, *, *, 5]


                        тогда уже
                        Ответить
                        • Кстати думал о звёздочках. Годный вореант.

                          >какое-то буэ
                          Можно сделать как в sparsed array.
                          case [[0] = 1, [4] = 5 ]
                          Ответить
                    • лол, вот и я проебался с примером, для пяти должно быть так:

                      case [1,,,,5]
                      Ответить
                      • Лядь, ну вы еще регулярку завезите, как в моём любимом Яuбy

                        def by_name(name)
                          case name
                          when /^[A-Z][a-z]+$/
                            'Name'
                          when /^[0-9]+$/
                            'Robot?'
                          else
                            'hm'
                          end
                        end
                        
                        puts by_name 'Joe' # Name
                        puts by_name '123' # Robot
                        Ответить
                        • Не смотрю Куросаву, извини
                          Ответить
                          • Ну всёж понятно и так, не?
                            Ответить
                            • 何もわからない
                              Ответить
                              • Руби появился в 1995-м, но до начала 2000-х не пользовался популярностью за пределами Японии.

                                Дело, вероятно, было в том, что вся документация по нему была только на японском
                                Ответить
                                • Почти как BVE
                                  Ответить
                                  • Почти как аниме.
                                    Ответить
                                    • puts НякаБака или как там правильно
                                      Ответить
                                      • Я не говорю по анимешному.
                                        Спроси всех остальных на говнокоде. У них богатый опыт дрочения на нарисованных девочек
                                        Ответить
                                • Кстати, давно уже не появлялось новой популярной скриптушни или я ошибаюсь?
                                  Ответить
    • Переведи на делфи.
      Ответить

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