- 1
public T GetT<T>(T t1, T t2) where T : class, IEnumerable<T>, new() { return new T().Concat(t1.Concat(t2)) as T; }
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+105
public T GetT<T>(T t1, T t2) where T : class, IEnumerable<T>, new() { return new T().Concat(t1.Concat(t2)) as T; }
привет всем! давно я не выкладывал перлы)
история сего кода такова: сидел я и придумывал вопросы на анкетирование при принятии на работу в мою контору. дело дошло до дженериков. не долго думая родилась сия жесть. када я сам понял шо написал, был подстолом.
вчитайтесь (вдумайтесь) в код!
то шо получилось - это код, который с синтаксической точки зрения абсолютно правильный, и он закомпилируется, НО, этот метод невозможно вызвать принципе! нельзя построить синтаксическую конструкцию средствами языка, ибо это будет постоянно сложенный на один уровень енумерейбл дженерик.
так-то!
Webkill 18.06.2010 13:14 # −1
Ошибка 1 "T" не содержит определения для "Concat" и не был найден метод расширения "Concat", принимающий тип "T" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) E:\MikhCarko\Projects\ConsoleApplication 1\ConsoleApplication1\Program.cs 10 28 ConsoleApplication1
Просто, как бы, если не компилируется - то и не код. А раз не код - то не говнокод.
guest 18.06.2010 13:22 # +3
Webkill 18.06.2010 13:53 # −3
guest 18.06.2010 19:38 # −1
guest 18.06.2010 14:30 # +3
Ты где-то метод main видишь?
и вообще -- у тебя что, русский .net SDK? Это о многом говорит
Webkill 18.06.2010 15:22 # −3
Ты болван? .Concat - это что за extension method?
> и вообще -- у тебя что, русский .net SDK?
Как это относится к делу? Очередное ad hominem.
guest 18.06.2010 16:26 # 0
Webkill 18.06.2010 17:25 # −2
> только дегенераты
Аргументация ad hominem в качестве логической ошибки имеет следующую форму:
1. Человек A задаёт вопрос X.
2. О человеке А известно нечто неприемлемое.
3. Следовательно, вопрос X глуп.
В такой форме логическая некорректность данной аргументации очевидна: тот факт, что лицо, задавшее вопрос, характеризуется по каким-то признакам отрицательно, никак не влияет на глупость его вопроса.
This is obvious 18.06.2010 18:38 # 0
2. О человеке-уебкилле извесно то, что он школоло и пишет всякую эзотерическую поебень в своём посте вида "ad hominem", дабы хоть как-то выделится среди всей массы и показать размер своего достоинства своих знаний своё умение пользоваться википедией.
3. Следовательно, человек-уёбкилл туп до невозможности, пост его высраная хуита, ниасилил программу даже уровня 9-ти классов, в связи с чем приходится бомжевать на улице, за сданные бутылки, собранные на улице, можно сходить в интернет-клуб, зайти на говнокод и насрать как положено.
guest 18.06.2010 19:36 # +1
Вебкилл, гесты за тебя!
This is obvious 18.06.2010 19:38 # −2
a11chemist 23.06.2010 10:15 # +5
1. Это Интернет, тут могут послать на х##.
2. Выбор есть. Не нравится, не читай.
3. Трёшь и банишь, значит 3.14дорас.
4. Аноним хуже 3.14дораса.
5. Будь готов, что всё, что ты написал в Интернете может
стать достоянием общественности. И не 3.14зди, если станет.
6. Всё, что вы напишете, на самом деле уже давно является
бояном.
7. Общаясь виртуально, будь готов к реальному общению с теми
же людьми. Тот, кто замыкается в виртуале - хуже анонима. Не
скрывай лицо за аватаром. Всё равно найдут, если захотят.
8. Прежде чем спросить людей, спроси у поисковой системы.
9. Прежде чем лезть в сетевую дискуссию, подумай, в курсе ли
ты вообще.
10. С3.14здил - ставь копирайт. Не знаешь чьё - не пости. Не
поставил - 3.14дорас.
11. Не трави, и не травим будешь.
12. Не парься! Не всё, что происходит в интернете тебя
касается.
13. Однажды попавшее в интернет остаётся в интернете
навсегда.
зы смю правило 4
Lure Of Chaos 23.06.2010 23:16 # +2
1. не нравится, не читай
2. не умеешь (не разбираешься в сабже), не пиши
3. если уж 1, не ()зди, а если уж 2, то отвечай за базар, ибо будь ты хоть трижды анонимусом в интернете, тебя найдут в реале и дадут ()зды
xeonix 24.06.2010 00:58 # 0
Lure Of Chaos 24.06.2010 13:27 # 0
guest 18.06.2010 16:25 # −3
Webkill 18.06.2010 17:26 # −1
guest 19.06.2010 02:13 # 0
Другие русским visual studio под страхом смерти пользоваться не будут
guest 19.06.2010 11:06 # +1
guest 19.06.2010 21:20 # +1
guest 21.06.2010 02:10 # +1
визуал студио сишарп экспресс - хорошая штука для редактирования кода и отладки. остальное - не нужно.
ты давай вебкиллами назови линупсоидами - они из всего из всего богатства тулзов студии нажимают ноль кнопок, только чёрная готишная консоль да мейкфайлы.
guest 18.06.2010 13:44 # −1
ОйОй Шарпокодер узнал про бесконечно разворачивающиеся шаблоны, наверно и IQ целых 10.
gorsash 18.06.2010 15:23 # −4
guest 18.06.2010 17:56 # −6
xeonix 19.06.2010 15:45 # 0
))))))))
guest 18.06.2010 18:21 # +1
вызываю GetT<MyClass>(new MyClass(),new MyClass()), всё откомпилилось. ЧЯДНТ?
xeonix 19.06.2010 15:42 # +1
насчёт русского СДК и того кто им пользуется, полностью согласен с гестами, +1, это галимая школота, которой на паскале или на бесике пидальть только, сто впрочем и так видно, еси он не может понять, что дефинишен метода Concat находится в System.Linq, который есть часть BCL, версий > .NET 3.5.
насчёт высоких интеллектуалов гэстов, у которых IQ зашкаливает за 1000, пускай молчят в тяпочку и не умничают тут, ибо я выложыл этот код чисто для потехи, а не для того, чтобы такие светила мировой науки, цвет нации, величяёшие говнокодеры всех времён и народов ломали свои головы над тайнами вселенной, сокрытыми в дженериках, просто убейтесь об стенку.
насчёт "MyClass" - молодец гэст, красиво выкрутлся, хотя и практической ценности от такого решения не больше чем от самого метода, что выложил, ибо каждый элемент енумерейбла - это ещё один енумерейбл, параметром которого будет такой же точно енумерейбл, - бесконечно вложенный дженерик.
З.Ы.: вместо того, шобы тут всякий шлак разводить, гест с АйКью 1E6, лучше бы додумался до такого решения.
З.Ы.Ы.: а вцелом, пасиба, повеселили старика коментами, молодцы гэсты!
Lure Of Chaos 19.06.2010 15:45 # −1
guest 19.06.2010 21:38 # +1
пиздец. эта фраза выдаёт в тебе дешёвого понтовщика (я знаю английский - я очень крутой). профессионалу без разницы - на каком языке студия. действия отрабатываются до моторики пальцев, тексты не имеют значения. или ты каждый раз внимтельно читаешь надпись Debug, прежде чем нажать дебажить? Если выдаётся ошибка - то рядом даётся её код.
> выложыл
Пиздец
guest 19.06.2010 21:40 # 0
Хотя нет, я зря на тебя наехал. Речь вообще-то шла о русскоязычной Визуал Студио, а не СДК. Здесь я согласен. Терминология в русском языке не очень хорошая, можно запутаться (Thread = поток, Stream = поток и т. д.). Читать оч сложно.
НО! Ничего в этом плохого нет. Если ты знаешь английский - ты просто его знаешь. Если ты знаешь его немного, но хреново - то начинаешь о своих познаниях кричать на каждом углу, и кто знает чуть хуже - тот школота галимая и т. д.
xeonix 19.06.2010 23:51 # −2
тут речь вовсе не о том, знаешь ли ты английский или нет, и кричишь ли ты о своих познаниях или нет.
чтобы делать реальные проекты и зарабатывать на них бабло, его нужно просто хорошо знать и без этого никак и никуда. именно это и отличает хеллоуворлдщиков от настоящих разработчиков.
guest 20.06.2010 00:38 # 0
я в таком случае не буду работать там. сдались мне профессиАналы, которым важнее, какой человеческий язык я предпочитаю, нежели мои иные какие-то качества.
> чтобы делать реальные проекты и зарабатывать на них бабло, его нужно просто хорошо знать и без этого никак и никуда.
я знаю английский прекрасно. и это не мешает мне использовать русскоязычную визуал студио.
xeonix 20.06.2010 03:14 # −3
тут разумеется приоритет не в языке, на котором ты юзаеш студию. например еси вся контора юзает русскую версию, то тада норм (хотя я таких не знаю, и вряд ли када такие появятся), а вот еси все юзают англ, а ты будеш всем показывать тотже стек трейс на русском, то будет полная бдяга (и упаси тебя господи исходный код писать с идентификаторами на кириллице, за такое бьют ногами в лицо!).
кроме того, в крупных конторах юзают ТФС (еси ты конешно знаешь что это такое), так вот щяс там всё на англ. и переводить его для тебя никто не станет.
да и ваще если уже на то пошло, то шарп, это как не крути - мнемонический язык программирования, основанный на английском, и для того чтобы на нём кодить, надо обязательно знать англ. это тебе не 1С скрипты писать)))
я юзаю всё на английском, винду, проги, студию, МСДН, оффис, ТФС, Шарепоинт и прочее ибо мне так проще и понятнее, ибо изначально вся компьютерная терминология англоязычна.
guest 20.06.2010 13:38 # +1
тебя куда-то заносит. я просто скачал Visual Studio C# Express. оказалось, что дали русскую версию. и мне похуй. конец истории.
> а вот еси все юзают англ, а ты будеш всем показывать тотже стек трейс на русском, то будет полная бдяга
эммм.. Стектрейс как можте бытиь русским? Там только описание эксепшна русское. По-моему, так будет на русскоязычной винде всегда, не?
> я юзаю всё на английском,
why wouldn;'t you speak English here too, it's a tech site
guest 20.06.2010 13:40 # 0
у еня кроме донтета кучи других проектов
и если блять чото работает под англ. виндой вдруг выльется в кракозябры на русской?
мне этого не надо.ю
так что ебал я твою любовь к быдлоанг\лосаксам, пойду кучать ЯП "ПРОФИТ"
Lure Of Chaos 20.06.2010 16:19 # 0
значит сам где то дурак, бо Юникод, как и Расширенный Юникод, давно на дворе
Webkill 20.06.2010 16:38 # −1
ага, давно, а конгсоль винды (хр хотя бы) например поддерживает только oem. сделает пиндос вывод ошибки в консоль - протестирует, ок, работает. а кириллица уже не прокатит. и таких моментов много. до сих пор встречаются траблы с локализацией. или например локализация дробей: "1.5" вместо "1,5" и т. д. Юникод - это не панацея.
Lure Of Chaos 21.06.2010 00:58 # +1
2. Это все ТОЛЬКО беды софта, которые наивно полагают, что с ними будут работать только англоязычные(как вариант, немчики) с определенной сислокалью (англ., нем) и конечно же такой софт сходит с ума, если настройки отличаются
guest 21.06.2010 02:13 # 0
ага, или вручную пользователем (который ебать хотел все эти настройки), или вручную программером, но тогда для тестирования нужно иметь ось с правильной локализацией.
> Это все ТОЛЬКО беды софта
ну да, до ума не доведено, на локализованной (неанглоязычной) системе не проверялось - вот и вылазит.
удивил.
guest 21.06.2010 02:16 # 0
т.е. я имел в виду не консоль, а вообще. консоль - только как пример того, что проблема юникода осталась даже для ucs2 (не говоря уже о >65535)
тем более что ещё если софт кросплатформенный, то больше проблем вылазит...
guest 21.06.2010 02:22 # 0
guest 21.06.2010 02:25 # 0
Webkill 20.06.2010 16:42 # −1
хаха, недавно видел список "современных" прог, которые сходили сума со знаками из не BMP
например сходила с ума опера (версия - хз)
Lure Of Chaos 21.06.2010 01:02 # 0
Подавляющее большинство разработчиков полагают, что юникода вполне хватает и это почти так.
Webkill 23.06.2010 17:47 # −2
Вчера узнал, оказывается MS. Net 2.0 не мог загрузить сборки, если в пути к сборке присутствовали combination marks типа знаков акцента (немецкие умляуты, напр.). Пофиксено в SP1. Вот тебе и "Расширенный Юникод давно на дворе" :)
Lure Of Chaos 23.06.2010 23:20 # +2
К сожалению, ув. Вебкилл, мы не в пиндосии, нам вдвойне опасно быть дураками.
xeonix 24.06.2010 00:55 # 0
стопудова!
согласен!
добавить нечего
Lexey 21.06.2010 19:39 # +2
Пассажи про бесконечную вложенность непонятны. Есть банальный объект, являющийся контейнером таких же объектов, которые можно доставать через энумератор. Так можно реализовывать представление любого дерева (файловой системы, например).
xeonix 22.06.2010 07:45 # −2
guest 19.06.2010 18:00 # −4
guest 19.06.2010 19:09 # −4
Lure Of Chaos 21.06.2010 01:02 # −1
xeonix 21.06.2010 03:33 # −2
значит для дробей, надо юзать CultureInfo, и нечего не хардкодить.
для проверки правильности работы проги, с ХР надо помудица, а вот на 7 всё просто, меняеш системный язык на требуемый (еси его нет - докачиваеш через обновления), меняеш локаль и вуаля, товоя виндя может стать хоть китайской. так можно протестировать и определить все проблемы с языком и кодировкой.
разумеется юникод не панацея, но в большинстве случяев его впалне хавтает.
что касается проблем с кодировкой консоли, то нада юзать определённый Emcoding для вывода текста. можно ещё сделать интероп на апи функцию "CharToOemW" - тоже в большенстве случяев помогает.
резюмируя, соглашусь с Lure Of Chaos, что када винда может правильно показать символы, а софт - нет, то
> Это все ТОЛЬКО беды софта
coHTwmS 25.08.2021 02:24 # 0