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

    +961

    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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    private class LinkedAction
    {
        public Action<Action<bool>> Action { get; set; }
    
        public LinkedAction Next { get; set; }
    
        public void Execute()
        {
            Action(s =>
                {
                    if (s && Next != null) Next.Execute();
                });
        }
    }
    
    private static LinkedAction NewLinkedAction(LinkedAction link, Action<Action<bool>> action)
    {
        return new LinkedAction
        {
            Action = action,
            Next = link
        };
    }
    
    var action = GetCopytoTestActions(parameter)
        .Reverse()
        .Aggregate<Action<Action<bool>>, LinkedAction>(null, NewLinkedAction);
    action.Execute();

    Запостил: abatishchev, 12 Марта 2012

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

    • Шарп знаю плохо. Прозреваю что говно тут:
      > .Aggregate<Action<Action<bool>>, LinkedAction>(null, NewLinkedAction);
      Ну и тупорылый метод NewLinkedAction.
      Так?
      Ответить
      • Код читается ужасно (Action<Action<bool>> wtf?). Как я понял, некто создаёт коллекцию неких экшенов и загоняет её в другой экшен, выполняющий переданные экшены по порядку и реализованный в виде односвязного списка (отсюда и реверс).
        Говно, видимо, в том, что вместо того, чтобы написать экшен, принимающий сразу коллекцию экшенов и foreach-ащий их, используются подозрительные подёргивания через reverse и односвязные списки.
        Ответить
        • Ну да.Как мы уже выяснили linq медленее обычного цикла.
          А всё потому что технология модная и суют её где попало.
          Получается шарперы скоро присоединятся к рнршникам и забудут циклы напрочь.
          Ответить
          • Раз уж linq-уют, можно было и через лямбду записать, а не создавать отдельную (достаточно тривиальную) функцию.
            Ответить
            • > linq-уют
              памятуя об одаренности до-диезненьких кодеров, это читается, как уютненький linq
              Ответить
          • Звездеть не надо.

            > Как мы уже выяснили linq медленее обычного цикла
            Если ты про тот недавний замер скорости суммирования массива, здесь на ГК, где обычный for был быстрее linq'а, то там код некорректный: linq и for выполняют разную работу. И выдадут разный результат на других данных.
            Просто мне надоело препираться тут со школотой. Пишут некорректные тесты - ну и хрен с ними.

            И уже неоднократно писалось: linq сделан не для скорости, он сделан для лаконичности исходного кода.
            Там где нужна высокая скорость, следует отказаться от линка и переписать вручную. Всё равно не хватает скорости - переписать на Си. Всё равно не хватает скорости - переписать на асме. Так понятно?

            > А всё потому что технология модная и суют её где попало
            Пусть так. Тебя это волнует? Хочешь об этом поговорить?
            Меня вот почему-то не волнуют школьнеги, пишущие быдлокод. Наоборот, на их фоне я выгодней отличаюсь, и имею с этого профит.

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

              ЗЫ. имхо сей "КГ" - афигенен. его написал наш архитектор.
              ах как я удачно потролил "шарп знаю плохо но критикую"!
              Ответить
              • >ах как я удачно потролил "шарп знаю плохо но критикую"!
                Мужик, дрочить не пробовал?
                Ответить
                • тролить лучше
                  Ответить
                  • Тут уже был один успешный "тролль". Ему повсюду чудились "троллинг, тролли, школа троллинга".
                    В конце концов оный опущенец был зачморен всеми и уползал со ртом набитым говном.
                    Ответить
                  • Лучше секс, поверь на слово
                    Ответить
                    • Вон Люр подтвердит. Раньше постоянно сидел.
                      А теперь они вдвоем меньше тут пишут, чем он когда-то в одиночку.
                      Ответить
                      • Правильно, раньше одна рука занята была, а теперь полностью
                        Ответить
                    • лучше и то, и другое, и третье, и четвертое
                      Ответить
                    • Троллинг через секс
                      Ответить
                      • Этож как с девушкой изъебнуться нужно, чтобы таким образом её протроллить
                        Ответить
            • >linq сделан не для скорости, он сделан для лаконичности исходного кода.
              В приведенном ГК оно совсем нелаконично. Циклом и быстрей и меньше кода.

              >Меня вот почему-то не волнуют школьнеги, пишущие быдлокод.
              Верно ошибся сайтом. Здесь же полно школокода.

              >Почти перестанут использовать - да. Язык развивается в сторону функционального программирования, и при наличии фолдов и аггрегаций циклы становятся не нужны.
              Правильно. Речь шла именно об этом. И будут использовать linq даже там где написать цикл короче.
              Ответить
              • показать все, что скрыто> В приведенном ГК оно совсем нелаконично.
                В приведенном ГК всего одна строка является линком - Aggregate. Всё остальное линком не является.

                > И будут использовать linq даже там где написать цикл короче.
                Я пай-мальчик, я не люблю ругаться. Но ты вынуждаешь. Ты туп как пробка (ибо троллингом это счесть нельзя).
                Если школота напишет неэффективный код на шарпе, значит и на си эта же школота будет писать неэффективно.
                Ответить
            • как в мире C# всё печально, если приходится сравнивать себя со школьником, чтобы почувствовать собственное превосходство и ощутить прилив гордости.
              Ответить
          • Чтобы ЛИНКохейтеры окончательно поняли, напишу.

            Недавно тут проскакивала ссылка http://www.joelonsoftware.com/articles/fog0000000319.html

            Несложно видеть, что использование стандартных сишных функций работы со строками в ряде случаев ведёт к квадратичному времени. Элементарная конкатенация вызывает пробег по строке каждый раз.
            Так стоит-ли из-за этого совсем отказаться от стандартных функций? Конечно же нет! Когда это не критично - можно и нужно использовать их (как и linq), когда время работы критично, пишем свои функции, заточенные под большое количество конкатенаций (используем циклы вместо линка).

            Надеюсь, донёс мысль?
            Ответить
            • >http://www.joelonsoftware.com/articles/fog0000000319.html
              Алгоритм польского маляра? Баян.

              >Всё равно не хватает скорости - переписать на Си. Всё равно не хватает скорости - переписать на асме.
              Иногда код на асме короче кода на Си. Уже были примеры, когда идиот писал 10-20 строк, чтоб установить/проверить нужный бит.
              Там где достаточно bt/btr/bts. Оно и быстрее и короче.

              Edit: а вот и пруфлинк, бейсик правда.
              http://govnokod.ru/3323#comment28311
              Ответить
              • он еврей а не поляк
                миллионер, гуру, евангелист, и вообще - знаменитый писатель, блоггер и программист
                (факт. не смотря на не особсую мою симпатию к нему)
                Ответить
                • http://govnokod.ru/9623#comment132243
                  http://govnokod.ru/9623#comment132291
                  Ответить
                  • в своей книжке он вспоминал юность в Израиле

                    а вот и пруф: Спольски родился в Альбукерке штата Нью-Мексико и жил там, пока ему не исполнилось 15 лет.[2] Затем с семьёй он переехал в Иерусалим в Израиле, где окончил среднюю школу и служил в десантных войсках.[2] В 1987 он возвращается в США чтобы поступить в колледж.
                    http://ru.wikipedia.org/wiki/Спольски,_Джоэл
                    Ответить
              • > Баян.
                Да, баян. Но я вынужден его напоминать.

                Объясняю ещё раз: в большинстве языков есть стандартная библиотека/фреймворк, которая позволяет большую часть задачи решать стандартными функциями. Например, те же строковые функции в Си, STL в С++. При этом понятно, что это далеко не всегда будет эффективно. Для конкретных случаев стандартные функции не годятся, и приходится писать код вручную.

                Я искренне не понимаю, почему ты и тебе подобные не наезжаете на стандартные библиотеки других языков? А вот почему-то linq на вас действует так.

                Резюмирую: ололо! stl отучает приплюснутых думать! они скоро совсем разучатся циклы писать! пыщь-пыщь!
                Ответить
                • STL срачи уже не так популярны. Вроде сейчас актуальней boost-флеймы.

                  >строковые функции в Си
                  Как по мне то строки в Си уебищны по дефолту.
                  >не наезжаете на стандартные библиотеки других языков
                  Зайди в разделы С/С++, почитай комментарии пользователя TarasB.
                  Ответить
                • Более того я тут ложил сырцы Swingа, и вообще стандартные библиотеки жабы местами не то что неудобны.
                  Это вообще антиюзабельное говно.
                  А Багланд и поделия Адоба не пинал только ленивый.
                  Подозреваю, что просто кому-то трудно выйти за пределы уютненького шарпомирка.
                  Ответить
                  • Кстати, поздравляю с днём 3.14 не вижу повода не выпить
                    Ответить
                  • Нет, ты не увиливай.
                    Ты писал, что недостаток шарпа в том, что якобы отучает использовать циклы. Я привёл в пример стандартные возможности Си и С++, которые позволяют тоже писать без циклов. Но это же не отучило сишников и крестовиков от циклов? Я их как использовал, так и использую, когда это надо.
                    Лично ты наезжал на линк, хотя не знаешь его. Именно поэтому я расписывал (похоже, зря...) достоинства и недостатки линка. Заметь, недостатки тоже.

                    Я приводил в пример именно си и с++, потому что ты отмечался в темах по этим языкам. Я предположил, что хоть чуть-чуть их знаешь, потому я их и использовал.

                    Просто я хочу сделать этот мир лучше. :)
                    Ответить
                    • 99% кто ругают линк - не знают линк
                      1% - реальные профессионалы
                      (не все реальные профессионалы ругают линк)
                      Ответить
                      • вы комплиментами обмениваетесь что-ли?
                        пригласите друг друга поужинать
                        Ответить
                        • Ему, видать, интересно изучить троллинг через секс
                          Ответить
                        • нет, речь шла не о нем
                          а о вас, линк-критиканах. которые линка не знают. вообще
                          тоже касается и c# в целом. вы его не знаете тоже. вообще.
                          "vb со скобочками", итп.
                          нифига не разбираетесь в предмете, которй критикуете
                          Ответить
                          • ололо, критиканы без особых напрягов могут на жабе свой линк забацать, с блэкджеком и шлюхами
                            Ответить
                            • пруф или не было
                              Ответить
                              • Пффф, уже почти всё есть в google-guava. Сделать более цельный фреймворк с ленивыми вычислениями по аналогии и прикрутить к нему тред-пул для параллельности - дело 2-3 дней. Лямбд не будет - это основная проблема. А ещё есть functional java.

                                В Clojure (который обычно бегает на JVM) весь ваш линк укладывается в операции над sequence.
                                Ответить
                                • >Лямбд не будет - это основная проблема.
                                  Угу. И не забывай про шапросахарок, extnesion-методы которым они расширили язык ради того чтоб всё писалось через точечку.
                                  Ответить
                        • Кукушка хвалит петуха за то, что хвалит он кукушку.
                          Ответить
                    • >Я приводил в пример именно си и с++, потому что ты отмечался в темах по этим языкам.
                      Ничем примечательным я там не отмечался. Ты что-то путаешь.

                      >Ты писал, что недостаток шарпа в том, что якобы отучает использовать циклы.
                      Я не писал о "недостатке". Это было больше предсказание эволюции вида до-диезников. Совать LINQ где попало.

                      Если и сравнивать шарп, то с жабой, потому что они похожи.
                      Ответить
                    • Ну как, сделал?
                      Ответить
      • не тупорилый, кстати говоря, а фабричный
        Ответить
    • Я так подозреваю, что все можно было сделать компактнее в цикле. Ну или по крайней мере заюзать родной связной список.
      Ответить

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