1. C# / Говнокод #16428

    +129

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    if (enabled)
                    {
                        tabPanel.Tabs[FilesTabKey].Enabled = filesAndDocumentsForm.HaveReadPermission(EstateId);
                    }
                    else
                    {
                        tabPanel.Tabs[FilesTabKey].Enabled = false;
                    }

    Запостил: zxxc, 26 Июля 2014

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

    • посмотрел filesAndDocumentsForm.HaveReadPermission (EstateId);
      это мегатяжелая фигня, видимо человек боялся что
      enabled && filesAndDocumentsForm.HaveReadPermission (EstateId)
      приведет к запуску filesAndDocumentsForm.HaveReadPermission
      Ответить
      • В сишке ксть такая забавная штука: `while (i++ < 200);` является одновременно и валидной конструкцией, и высером ебанутого автора-мудака. Поэтому чтобы подчеркнуть, что они не ебанутые, авторы зачастую прибегают к следующему форматированию:
        while (i++ < 200) {
            ;
        }

        Что подчеркивает, что данный блок был вставлен сюда специально, и не смей, сукаблять, его трогать.
        Так и здесь, у меня есть подозрение, что автор либо хотел подчеркнуть самую массивную часть методи, либо просто не любит короткую нотацию и тернарные операторы.
        Ответить
        • // как это видел программист
          while (i++ < 200) {
              ;
          }
          // как это видит оптимизатор крестов
          i = 201
          Ответить
          • увборманд, вы же понимаете, в while может оказаться любая хуйня, включая вызовы функций или, например, поиск конца строки, это пример для наглядности
            Ответить
          • И это хорошо. Еще бы был анализатор кода, который бы выделял полное говно в коде. Было бы весело.
            Кстати есть ли обучалки, которые дают задачу, а потом ставят твоему коду оценки типа - скорость, изящность, красота? И взрывают комп, если оценка дно-дно-дно
            Ответить
            • code hunt или как там его звали. Если хочется покачать LINQ - само то.
              Ответить
              • Там и жаба есть. Милая вещь
                Ответить
                • Жаба там в неравных условиях. Ее запилили через жопу трансляцию в шарп. И там, емнип, нету кучи классов. 3.14159265, помнится, на это ругался.

                  Так что юзабельно только для изучения шарпика.
                  Ответить
                  • ну так она не для опытных дядь, а для новичков. Для них - самое то. Мне так кажется
                    Ответить
                  • Что мне там не нравится, так то, что без линка даже с помощь байтоебства нельзя получить 3 балла
                    Ответить
                    • Дык этот сайт как раз и запилен для того, чтобы показать как жаба отсасывает у шарпика с его LINQ... Реклама ;)
                      Ответить
                      • линк можно самому написать. с нормальными именами map filter и тд там ведь даже никакой оптимизации нет
                        Ответить
                    • >то без линка даже с помощь байтоебства нельзя получить 3 балла
                      Я не знаю, как тут вообще можно его применить
                      6.12 = return s+new StringBuffer(s).reverse(); //1 кирпич
                      7.01 = return b+c+a+a+c+b; //2 кирпича
                      12.12 = java.util.Collections.sort(a); return a; //1 кирпич
                      Тупо однострочнки.
                      Ответить
                      • >>Я не знаю, как тут вообще можно его применить
                        В жабе то?)
                        Как тебе ебанутые уровни в стиле - "угадай формулу!"?
                        Я периодически захожу, пишу на 3 плюшки пару заданий. Иногда довольно много времени уходит на понять какой путь хотели авторы сего дива
                        Ответить
                        • >В жабе то?)
                          В шарпе. Как применить LINQ к такой вот задаче:
                          7.01 = return b+c+a+a+c+b; если есть простое и лаконичное решение.
                          Ответить
                          • Видимо как то так
                            https://ideone.com/RmZZal
                            Ответить
                            • И хардкором без линкю :)
                              String[] arr = new String[] { "a", "b", "c", };
                              StringBuilder result = new StringBuilder();
                              result.Append(String.Join(String.Empty, arr));
                              Array.Reverse(arr);
                              result.Append(String.Join(String.Empty, arr));
                              Console.WriteLine(result.ToString());
                              Ответить
                              • result.Append(String.Join(String.Empty, arr));

                                знатное говнецо
                                Ответить
                                • А стрингбилдер случаем не умеет кушать Enumerabl'ы?
                                  Ответить
                                • От чего-же?
                                  Array.Reverse использует нативный код.
                                  // System.Array
                                  [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail), SecurityCritical]
                                  [MethodImpl(MethodImplOptions.InternalCall)]
                                  private static extern bool TrySZReverse(Array array, int index, int count);


                                  String.Join манипулирует указателями и так-же, через нативный код:
                                  // string
                                  [SecurityCritical]
                                  [MethodImpl(MethodImplOptions.InternalCall)]
                                  internal static extern string FastAllocateString(int length);

                                  + UnSafeCharBuffer
                                  Ответить
                                  • https://ideone.com/VOsKv2
                                    Ответить
                                    • Так производительность не замеряют:
                                      http://ideone.com/SP3CRy
                                      Ответить
                                      • а так?
                                        http://ideone.com/gm7yzn
                                        Ответить
                                      • сорри, попутал поля

                                        http://ideone.com/ee6QgC

                                        Действительно выходит, что метод тауСигмы чуууууть-чуть быстрее
                                        Ответить
                                        • > чуууууть-чуть быстрее
                                          Пример не маловат ли для бенча? :) Всего полсекунды на оба теста...
                                          Ответить
                                          • если мало 1048576 строк - добавь к цифирке в цикле чутка
                                            Ответить
                                            • если ты не голубой
                                              дорисуй вагон другой
                                              Ответить
                                            • > добавь к цифирке в цикле чутка
                                              На 22 еще пашет, дальше уже падать по таймауту начинает. Разница процентов на 10 есть, да.
                                              Ответить
                                              • Туплю. щас процент найду
                                                Ответить
                                                • http://ideone.com/JAspBd
                                                  Так проще будет.
                                                  Странно, а у меня на винде форыч быстрее получается...
                                                  Ответить
                                                  • > на винде форыч быстрее получается
                                                    Намного?
                                                    Ответить
                                                    • >Намного?
                                                      Форыч:
                                                      Elapsed: 00.0191 s,  MemDelta: 10276.39 KB,  GC count: 2
                                                      
                                                      Join:
                                                      Elapsed: 00.0315 s,  MemDelta: 16384.07 KB,  GC count: 1

                                                      Хотя у меня машина засрана всякими кошмарскими и остальными богомерскими штуками...
                                                      Или в моне не грамотно реализовали String.Join(...).
                                                      Ответить
                                                      • Эх, Форыч, Форыч.
                                                        Форыч Форыч Форыч - это Фио
                                                        Ответить
                                                        • фио с двумя равными кругами
                                                          Ответить
                                                          • я НИХУЯ НЕ ПОНЯЛ
                                                            Ответить
                                                            • что такое 8? 8 - это цифра
                                                              цифра с двумя ровными кругами
                                                              8 на боку бывает тупо бесконечность
                                                              8, что же завтра будет с нами?
                                                              Ответить
                                                              • Восемь! Восемь! Восемь и три!
                                                                Восемь! Восемь ты набери!
                                                                Там ответит дядя Равшан!
                                                                Такси - жигуль-баклажан!
                                                                Ответить
                                              • http://ideone.com/dLFyxG

                                                в 2 раза.
                                                Хуяcе я перегрелся на солнышке
                                                Ответить
                      • Например возведение в степень. Я написал классический быстрый алгоритм - 2 плашки. Думаю - может линк хотят - нет, тоже 2 плашки. Цикл - 2 плашки. А рекурсия - 3! И надпись "вы написали элегантный код!"
                        Ответить
                        • >Например возведение в степень.
                          Зона/Номер?
                          Ответить
                          • 3.01
                            Ответить
                            • >классический быстрый алгоритм - 2 плашки
                              >Цикл - 2 плашки. А рекурсия - 3!
                              Нахера циклы? Используй классический быстрый FPU:
                              return (int)((long)Math.pow(number,power));
                              Только там задание ебанутое - надо повторить ублюдочное переполнение лонга в int. Отсюда и дурацкие касты.
                              Ответить
                              • Да я уже все подряд юзал. Было интересно на чем он сдастся
                                Ответить
                              • ты 6.03 сделал на 3 плашки?
                                Ответить
                                • >ты 6.03 сделал на 3 плашки?
                                  Угу.
                                  public static String Puzzle(String s) {
                                  		String r="";		
                                          for (int i = 1; i < s.length(); ++i){
                                  			char ch=s.charAt(i-1);
                                  			if (' '==s.charAt(i)) 
                                  				ch = Character.toUpperCase(ch);
                                  			r+=ch;
                                  		}
                                  		r+=Character.toUpperCase(  s.charAt(s.length()-1) );
                                  		return r;
                                  	    
                                      }

                                  Как ни странно многие решения циклами высираются на три кирпича.
                                  Ответить
                                  • Я сейчас писал почти тоже самое - 2 кирпича . Что за хуйня? Мне кажется его придумали сатанисты
                                    Ответить
                                    • >Что за хуйня?
                                      У меня была точно такая же реакция когда я проходил CODEHURT.

                                      Впрочем уровни с шифрованием мне понравились.
                                      Ответить
                                      • http://download.hdd.tomsk.ru/preview/voejptak.jpg

                                        ЧЯДНТ?!
                                        var output="";		
                                                for (int i = 1; i < s.Length; ++i)
                                        	   output+=' '==s[i]?Char.ToUpper(s[i-1]):s[i-1];
                                        	return output+char.ToUpper(  s[s.Length-1] );
                                        Ответить
                                        • Хм. Вроде идентичная херь. Может оно для шарпа по-другому считает кирпичи?
                                          Ответить
                                          • плохо представляю как сделать лучше
                                            Ответить
                                            • LINQ. Сделает ваш код лучше.
                                              Ответить
                                            • >плохо представляю как сделать лучше
                                              http://govnokod.ru/16428#comment241295
                                              У меня этот код выдает 3 кирпича. Что я делаю так?
                                              Ответить
                                              • Я уже все возможные прыжки с линком сделал, я тупо не могу придумать способ. Заебало. Я уверен, что на 3 балла надо сделать какой то ебанутый неоптимальный прыжок в сторону, но мне уже похуй. Гори в аду code hunt
                                                Ответить
                                                • > но мне уже похуй. Гори в аду code hunt
                                                  Да у тебя же CODE HURT!
                                                  Ответить
                              • 06.09
                                return a.Length==b.Length?a+b:a.Length>b.Length ?a:b; - 3 плашки

                                return a.Length<b.Length?a:a.Length>b.Length?b: a+b; - 2 плашки

                                В чем, БЛЕААААААТЬ!!!, разница?!!! == быстрее < ?!!)
                                Ответить
                                • Лол, у меня три, причем ветка a+b в самом конце
                                  int al=a.length(),bl=b.length();
                                  if (al>bl) return a;
                                  if (bl>al) return b;
                                  return a+b;
                                  Ответить
                                • разница в порядке обхода ветвей
                                  Ответить
                  • >Так что юзабельно только для изучения шарпика.
                    Я её почти всю на жабе прошёл. Вспомнил время лаб, т.к. много фич из стандартной библиотеки не запилили - велосипедил всё сам.
                    Только циклы, только массивы, только хардкор.
                    Ответить
        • >>`while (i++ < 200);` является одновременно и валидной конструкцией

          пример можно?
          Ответить
          • Бессмысленно - да, не спорю. Но чем она невалидна? С точки зрения языка и компилятора там всё норм.
            Ответить
            • Валидна-то - спору нет. но гость сказал
              "В сишке ксть такая забавная штука: `while (i++ < 200);` является одновременно и валидной конструкцией, и высером ебанутого автора-мудака. Поэтому чтобы подчеркнуть, что они не ебанутые"
              В каком месте не ебанутые ?
              Ответить
              • самый тупой пример на свете (мне лень переписывать нахождение квадратного корня).
                while(!matches_required_precision(x = improve_precision(x)));
                Ответить
                • Как вычмат-то тяжело вспоминается :)
                  http://ideone.com/x6rkHb
                  На хабре проскакивал пример, в котором аналогичным циклом коммитили выделенную память.
                  ИМХО логику лучше писать в теле цикла.
                  Ответить
                  • while(!matches_required_precision(x = improve_precision(x)));

                    нифига не

                    while (i++ < 200);

                    короче вы пошутили а я не понял
                    Ответить
                    • сами вы пошутили

                      http://govnokod.ru/16428#comment241109
                      Ответить
                      • Ну так пример можно было и понаглядней выбрать... Вот такой например:
                        while (*dst++ = *src++);
                        Имхо, отличная иллюстрация для того, о чем ты писал в том комменте.
                        Ответить

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