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

    +105

    1. 1
    public T GetT<T>(T t1, T t2) where T : class, IEnumerable<T>, new() { return new T().Concat(t1.Concat(t2)) as T; }

    привет всем! давно я не выкладывал перлы)
    история сего кода такова: сидел я и придумывал вопросы на анкетирование при принятии на работу в мою контору. дело дошло до дженериков. не долго думая родилась сия жесть. када я сам понял шо написал, был подстолом.
    вчитайтесь (вдумайтесь) в код!
    то шо получилось - это код, который с синтаксической точки зрения абсолютно правильный, и он закомпилируется, НО, этот метод невозможно вызвать принципе! нельзя построить синтаксическую конструкцию средствами языка, ибо это будет постоянно сложенный на один уровень енумерейбл дженерик.
    так-то!

    Запостил: xeonix, 18 Июня 2010

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

    • Как запустить? Пишет:

      Ошибка 1 "T" не содержит определения для "Concat" и не был найден метод расширения "Concat", принимающий тип "T" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) E:\MikhCarko\Projects\ConsoleApplication 1\ConsoleApplication1\Program.cs 10 28 ConsoleApplication1

      Просто, как бы, если не компилируется - то и не код. А раз не код - то не говнокод.
      Ответить
      • просто ты, вебкалл -- лузир позорный, даже канпелятор тибя не уважает...
        Ответить
      • Что запустить-то?
        Ты где-то метод main видишь?

        и вообще -- у тебя что, русский .net SDK? Это о многом говорит
        Ответить
        • > Что запустить-то?

          Ты болван? .Concat - это что за extension method?

          > и вообще -- у тебя что, русский .net SDK?

          Как это относится к делу? Очередное ad hominem.
          Ответить
          • Прямо и относиться, только дегенераты могут пользоваться переведеной msdn на язык отличный от рассововерного
            Ответить
            • > Прямо и относиться, только дегенераты могут

              > только дегенераты

              Аргументация ad hominem в качестве логической ошибки имеет следующую форму:

              1. Человек A задаёт вопрос X.
              2. О человеке А известно нечто неприемлемое.
              3. Следовательно, вопрос X глуп.

              В такой форме логическая некорректность данной аргументации очевидна: тот факт, что лицо, задавшее вопрос, характеризуется по каким-то признакам отрицательно, никак не влияет на глупость его вопроса.
              Ответить
              • 1. Человек-уебкилл пишет пост.
                2. О человеке-уебкилле извесно то, что он школоло и пишет всякую эзотерическую поебень в своём посте вида "ad hominem", дабы хоть как-то выделится среди всей массы и показать размер своего достоинства своих знаний своё умение пользоваться википедией.
                3. Следовательно, человек-уёбкилл туп до невозможности, пост его высраная хуита, ниасилил программу даже уровня 9-ти классов, в связи с чем приходится бомжевать на улице, за сданные бутылки, собранные на улице, можно сходить в интернет-клуб, зайти на говнокод и насрать как положено.
                Ответить
                • Очередное ad hominem. Как же вы задолбали.

                  Вебкилл, гесты за тебя!
                  Ответить
                  • подражаешь вебкиллу ? Да ты хуже него, ещё и опозорил честь анонимуса :-)
                    Ответить
                  • 13 заповедей Интернета:

                    1. Это Интернет, тут могут послать на х##.
                    2. Выбор есть. Не нравится, не читай.
                    3. Трёшь и банишь, значит 3.14дорас.
                    4. Аноним хуже 3.14дораса.
                    5. Будь готов, что всё, что ты написал в Интернете может
                    стать достоянием общественности. И не 3.14зди, если станет.
                    6. Всё, что вы напишете, на самом деле уже давно является
                    бояном.
                    7. Общаясь виртуально, будь готов к реальному общению с теми
                    же людьми. Тот, кто замыкается в виртуале - хуже анонима. Не
                    скрывай лицо за аватаром. Всё равно найдут, если захотят.
                    8. Прежде чем спросить людей, спроси у поисковой системы.
                    9. Прежде чем лезть в сетевую дискуссию, подумай, в курсе ли
                    ты вообще.
                    10. С3.14здил - ставь копирайт. Не знаешь чьё - не пости. Не
                    поставил - 3.14дорас.
                    11. Не трави, и не травим будешь.
                    12. Не парься! Не всё, что происходит в интернете тебя
                    касается.
                    13. Однажды попавшее в интернет остаётся в интернете
                    навсегда.

                    зы смю правило 4
                    Ответить
                    • можно подсократить

                      1. не нравится, не читай
                      2. не умеешь (не разбираешься в сабже), не пиши
                      3. если уж 1, не ()зди, а если уж 2, то отвечай за базар, ибо будь ты хоть трижды анонимусом в интернете, тебя найдут в реале и дадут ()зды
                      Ответить
                    • ну, не каждый анон ушлёпок, это скорее частный случай )
                      Ответить
                      • анонимность дает возможность анонимно нагадить, под своим именем же боятся, суки
                        Ответить
        • чо за русский сдека нет? пруф в студию! Или про мсдн на русском?
          Ответить
          • сайт майкрософта даёт на скачку русскояязычный Visual Studio Express если сидеть с нужного айпи.
            Ответить
            • С IP для умственно-отсталых детсадовцев?

              Другие русским visual studio под страхом смерти пользоваться не будут
              Ответить
              • какая разница-то? мсдн читаю по--английски. а какой язык в визаул-студии - какая разгица? там три кнопки нажать-то. там читатьь нечегою.
                Ответить
                • Если ты из всего богатства тулзов студии юзаешь только три кнопки, то ты тупорылый папуас. Впрочем это и не удивительно -- ты же вебкил
                  Ответить
                  • > Если ты из всего богатства тулзов студии юзаешь только три кнопки, то ты тупорылый папуас.

                    визуал студио сишарп экспресс - хорошая штука для редактирования кода и отладки. остальное - не нужно.
                    ты давай вебкиллами назови линупсоидами - они из всего из всего богатства тулзов студии нажимают ноль кнопок, только чёрная готишная консоль да мейкфайлы.
                    Ответить
    • >>>ибо это будет постоянно сложенный на один уровень енумерейбл дженерик
      ОйОй Шарпокодер узнал про бесконечно разворачивающиеся шаблоны, наверно и IQ целых 10.
      Ответить
    • показать все, что скрытоГде здесь C++?!
      Ответить
    • С какой это стати его нельзя вызвать? Создал такой класс:
      public class MyClass: IEnumerable<MyClass>
      {
          public IEnumerator<MyClass> GetEnumerator()
          {
              yield return new MyClass();
          }
          IEnumerator IEnumerable.GetEnumerator()
          {
              return GetEnumerator();
          }
      }

      вызываю GetT<MyClass>(new MyClass(),new MyClass()), всё откомпилилось. ЧЯДНТ?
      Ответить
    • ахахаха лолъ. ну и вы тут и развели ...э, полемику, пока меня небыло с моего поста. чеесслово улыбнуло)
      насчёт русского СДК и того кто им пользуется, полностью согласен с гестами, +1, это галимая школота, которой на паскале или на бесике пидальть только, сто впрочем и так видно, еси он не может понять, что дефинишен метода Concat находится в System.Linq, который есть часть BCL, версий > .NET 3.5.
      насчёт высоких интеллектуалов гэстов, у которых IQ зашкаливает за 1000, пускай молчят в тяпочку и не умничают тут, ибо я выложыл этот код чисто для потехи, а не для того, чтобы такие светила мировой науки, цвет нации, величяёшие говнокодеры всех времён и народов ломали свои головы над тайнами вселенной, сокрытыми в дженериках, просто убейтесь об стенку.
      насчёт "MyClass" - молодец гэст, красиво выкрутлся, хотя и практической ценности от такого решения не больше чем от самого метода, что выложил, ибо каждый элемент енумерейбла - это ещё один енумерейбл, параметром которого будет такой же точно енумерейбл, - бесконечно вложенный дженерик.
      З.Ы.: вместо того, шобы тут всякий шлак разводить, гест с АйКью 1E6, лучше бы додумался до такого решения.
      З.Ы.Ы.: а вцелом, пасиба, повеселили старика коментами, молодцы гэсты!
      Ответить
      • +1 024
        Ответить
      • > насчёт русского СДК и того кто им пользуется, полностью согласен с гестами, +1, это галимая школота

        пиздец. эта фраза выдаёт в тебе дешёвого понтовщика (я знаю английский - я очень крутой). профессионалу без разницы - на каком языке студия. действия отрабатываются до моторики пальцев, тексты не имеют значения. или ты каждый раз внимтельно читаешь надпись Debug, прежде чем нажать дебажить? Если выдаётся ошибка - то рядом даётся её код.

        > выложыл

        Пиздец
        Ответить
      • > насчёт русского СДК

        Хотя нет, я зря на тебя наехал. Речь вообще-то шла о русскоязычной Визуал Студио, а не СДК. Здесь я согласен. Терминология в русском языке не очень хорошая, можно запутаться (Thread = поток, Stream = поток и т. д.). Читать оч сложно.

        НО! Ничего в этом плохого нет. Если ты знаешь английский - ты просто его знаешь. Если ты знаешь его немного, но хреново - то начинаешь о своих познаниях кричать на каждом углу, и кто знает чуть хуже - тот школота галимая и т. д.
        Ответить
        • та не факт. вот ты прийди в какую-нибудь мало-мальски серьёзную контору и скажи что ты будешь кодить в русской Визуал Студио... та тебя в лучшем случае гнилыми помидорами закидают!
          тут речь вовсе не о том, знаешь ли ты английский или нет, и кричишь ли ты о своих познаниях или нет.
          чтобы делать реальные проекты и зарабатывать на них бабло, его нужно просто хорошо знать и без этого никак и никуда. именно это и отличает хеллоуворлдщиков от настоящих разработчиков.
          Ответить
          • > вот ты прийди в какую-нибудь мало-мальски серьёзную контору и скажи что ты будешь кодить в русской Визуал Студио... та тебя в лучшем случае гнилыми помидорами закидают!

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

            > чтобы делать реальные проекты и зарабатывать на них бабло, его нужно просто хорошо знать и без этого никак и никуда.

            я знаю английский прекрасно. и это не мешает мне использовать русскоязычную визуал студио.
            Ответить
            • ну да, а с забугорными заказчиками ты тоже будешь на русском тереть?
              тут разумеется приоритет не в языке, на котором ты юзаеш студию. например еси вся контора юзает русскую версию, то тада норм (хотя я таких не знаю, и вряд ли када такие появятся), а вот еси все юзают англ, а ты будеш всем показывать тотже стек трейс на русском, то будет полная бдяга (и упаси тебя господи исходный код писать с идентификаторами на кириллице, за такое бьют ногами в лицо!).
              кроме того, в крупных конторах юзают ТФС (еси ты конешно знаешь что это такое), так вот щяс там всё на англ. и переводить его для тебя никто не станет.
              да и ваще если уже на то пошло, то шарп, это как не крути - мнемонический язык программирования, основанный на английском, и для того чтобы на нём кодить, надо обязательно знать англ. это тебе не 1С скрипты писать)))
              я юзаю всё на английском, винду, проги, студию, МСДН, оффис, ТФС, Шарепоинт и прочее ибо мне так проще и понятнее, ибо изначально вся компьютерная терминология англоязычна.
              Ответить
              • > (и упаси тебя господи исходный код писать с идентификаторами на кириллице, за такое бьют ногами в лицо!).

                тебя куда-то заносит. я просто скачал Visual Studio C# Express. оказалось, что дали русскую версию. и мне похуй. конец истории.

                > а вот еси все юзают англ, а ты будеш всем показывать тотже стек трейс на русском, то будет полная бдяга

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

                > я юзаю всё на английском,

                why wouldn;'t you speak English here too, it's a tech site
                Ответить
              • просто как бы если софт расчитывается быть локализуемым, то девелоперу строго рекоммендиуется иметь неанглоязычную ось
                у еня кроме донтета кучи других проектов
                и если блять чото работает под англ. виндой вдруг выльется в кракозябры на русской?
                мне этого не надо.ю
                так что ебал я твою любовь к быдлоанг\лосаксам, пойду кучать ЯП "ПРОФИТ"
                Ответить
                • > и если блять чото работает под англ. виндой вдруг выльется в кракозябры на русской?

                  значит сам где то дурак, бо Юникод, как и Расширенный Юникод, давно на дворе
                  Ответить
                  • > значит сам где то дурак, бо Юникод, как и Расширенный Юникод, давно на дворе

                    ага, давно, а конгсоль винды (хр хотя бы) например поддерживает только oem. сделает пиндос вывод ошибки в консоль - протестирует, ок, работает. а кириллица уже не прокатит. и таких моментов много. до сих пор встречаются траблы с локализацией. или например локализация дробей: "1.5" вместо "1,5" и т. д. Юникод - это не панацея.
                    Ответить
                    • 1. ХРюша сама по себе уже не нова, поэтому в мелочах не так удобна, как могла быть (замечается после работы с той же семеркой). А кодировка консоли вроде как настраивается О_О

                      2. Это все ТОЛЬКО беды софта, которые наивно полагают, что с ними будут работать только англоязычные(как вариант, немчики) с определенной сислокалью (англ., нем) и конечно же такой софт сходит с ума, если настройки отличаются
                      Ответить
                      • > А кодировка консоли вроде как настраивается О_О

                        ага, или вручную пользователем (который ебать хотел все эти настройки), или вручную программером, но тогда для тестирования нужно иметь ось с правильной локализацией.

                        > Это все ТОЛЬКО беды софта

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

                        удивил.
                        Ответить
                        • > но тогда для тестирования нужно иметь ось с правильной локализацией.

                          т.е. я имел в виду не консоль, а вообще. консоль - только как пример того, что проблема юникода осталась даже для ucs2 (не говоря уже о >65535)
                          тем более что ещё если софт кросплатформенный, то больше проблем вылазит...
                          Ответить
                          • Я так понимаю юникод тоже не панацея? А что тогда делать?
                            Ответить
                            • тестировать не на англоязычных платформах хотя бы изредка)
                              Ответить
                  • > Расширенный Юникод

                    хаха, недавно видел список "современных" прог, которые сходили сума со знаками из не BMP
                    например сходила с ума опера (версия - хз)
                    Ответить
                    • все это повтор проблемы "крякозяблов" на каждое второе знакоместо, если пришел юникод, а мы ждали 9бит-кодировку. С Расширенным Юникодом тоже нужно уметь работать, если хочешь работать: учитывать все эти кодовые точки и т.д.
                      Подавляющее большинство разработчиков полагают, что юникода вполне хватает и это почти так.
                      Ответить
                  • > значит сам где то дурак, бо Юникод, как и Расширенный Юникод, давно на дворе

                    Вчера узнал, оказывается MS. Net 2.0 не мог загрузить сборки, если в пути к сборке присутствовали combination marks типа знаков акцента (немецкие умляуты, напр.). Пофиксено в SP1. Вот тебе и "Расширенный Юникод давно на дворе" :)
                    Ответить
                    • ну дык дядя Баллмер живет в самой главной стране, где мышление ограничено ANSI и, значит, все должны подражать.

                      К сожалению, ув. Вебкилл, мы не в пиндосии, нам вдвойне опасно быть дураками.
                      Ответить
                      • +1
                        стопудова!
                        согласен!
                        добавить нечего
                        Ответить
      • >насчёт "MyClass" - молодец гэст, красиво выкрутлся, хотя и практической ценности от такого решения не больше чем от самого метода, что выложил, ибо каждый элемент енумерейбла - это ещё один енумерейбл, параметром которого будет такой же точно енумерейбл, - бесконечно вложенный дженерик.

        Пассажи про бесконечную вложенность непонятны. Есть банальный объект, являющийся контейнером таких же объектов, которые можно доставать через энумератор. Так можно реализовывать представление любого дерева (файловой системы, например).
        Ответить
        • ну да, это только если расширить этот класс, чтобы он хранил ещё какую-нибудь полезную информацию а не был просто енумерейблом самого себя
          Ответить
    • Где здесь Ada?
      Ответить
      • А вы ещё не дрочите на С++? Тогда мы идём к вам.
        Ответить
      • Doctor Ada спешит вам на помощь, никуда не уходите...
        Ответить
    • фуух, ну вы тут опять напостили.
      значит для дробей, надо юзать CultureInfo, и нечего не хардкодить.
      для проверки правильности работы проги, с ХР надо помудица, а вот на 7 всё просто, меняеш системный язык на требуемый (еси его нет - докачиваеш через обновления), меняеш локаль и вуаля, товоя виндя может стать хоть китайской. так можно протестировать и определить все проблемы с языком и кодировкой.
      разумеется юникод не панацея, но в большинстве случяев его впалне хавтает.
      что касается проблем с кодировкой консоли, то нада юзать определённый Emcoding для вывода текста. можно ещё сделать интероп на апи функцию "CharToOemW" - тоже в большенстве случяев помогает.
      резюмируя, соглашусь с Lure Of Chaos, что када винда может правильно показать символы, а софт - нет, то
      > Это все ТОЛЬКО беды софта
      Ответить
    • Из-за этой странной обстановки мы с Джеем даже не до конца доели свой ужин, и ближе к одиннадцати вечера парень послал меня до холодильника. Он который час уже проходил очень сложный уровень и очень сильно просил меня покормить его, ссылаясь практически на всё, что он делал для меня.
      Ответить

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