metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-10-06 12:08 pm

Хипсторасы

Есть такой неплохой веб-фреймворк для гопнета: https://github.com/NancyFx/Nancy
Нормальный роутинг, более-менее адекватные методы хостинга сервисов, convention over configuration, более-менее прилично написанный код (сильно лучше чем говно WCF), встроенная dashboard для диагностики, сделанная на самом этом фреймворке, IoC во все поля, итд.

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

И вот такое в дотнете - сугубо на каждом шагу, дроч на паттерны, дроч на инкапсуляцию вплоть до того, что объективно нужные классы и их свойства иначе как рефлекшеном не вытащишь и при этом - бредовые архитектурные решения. "Место проклятое".

[identity profile] aliaksei.livejournal.com 2013-10-06 09:22 am (UTC)(link)
В последнем абзаце ты описал даже не дотнет, а типичную ойти контору.

[identity profile] anonim-legion.livejournal.com 2013-10-06 12:31 pm (UTC)(link)
+100500

[identity profile] bydlorus.livejournal.com 2013-10-06 10:14 am (UTC)(link)
> public dynamic Filtered(dynamic parameters)

Чота я за 2 года С++ отстал от модных дотнет тенденций.

[identity profile] metaclass.livejournal.com 2013-10-06 10:46 am (UTC)(link)
Зависимых типов нет, вывода типов нормального нет - "делаем из дотнета руби, пхп и питон".

[identity profile] denisioru.livejournal.com 2013-10-06 11:22 am (UTC)(link)
За такой код - лоботомию делать.

[identity profile] metaclass.livejournal.com 2013-10-06 11:28 am (UTC)(link)
public class ClojureHashmapInGopnet:Dictionary
[Error: Irreparable invalid markup ('<dynamic,>') in entry. Owner must fix manually. Raw contents below.]

public class ClojureHashmapInGopnet:Dictionary<dynamic, dynamic> {

new public dynamic this[dynamic key] {
get {
dynamic v;
if(TryGetValue(key, out v)){
return v;
}else{
return null;
}
}
set{
((Dictionary<dynamic, dynamic>)this)[key] = value;
}

}

}

[identity profile] denisioru.livejournal.com 2013-10-06 11:29 am (UTC)(link)
блядь ужас какой.

[identity profile] bydlorus.livejournal.com 2013-10-06 12:12 pm (UTC)(link)
Чем-то неуловимо напоминает единственную кнопку с надписью "Сделать зашибись".

[identity profile] blackyblack.livejournal.com 2013-10-07 05:00 am (UTC)(link)
Как-то по-хипстерски. :)

[identity profile] tretiy3.livejournal.com 2013-10-06 11:30 am (UTC)(link)
а зачем пользовать какой-то фреймворк, если есть из коробки asp.net mvc?

[identity profile] metaclass.livejournal.com 2013-10-06 11:39 am (UTC)(link)
Так сумасшедшие все. Оно поверхностно выглядит нормальным, а как доходит до дела - вечно какой-то трэш.
Шаг в сторону от прибитых гвоздями практик и начинается такое вуду, что проще с нуля написать, чем днями в рефлекторе изучать логику работы индусского кода.

[identity profile] avnik.livejournal.com 2013-10-06 12:17 pm (UTC)(link)
а зачем ты продолжаешь себя мучать этим дотнетом?

[identity profile] theiced.livejournal.com 2013-10-06 12:30 pm (UTC)(link)
он ещё опердени для уебланов пишет. я тоже не понимаю.

[identity profile] avnik.livejournal.com 2013-10-06 12:43 pm (UTC)(link)
ну он их хотя бы на кложе пишет.
А тут бездны какие-то.

PS Мне тут правда недавно пришлось в джаву заглянуть, там тоже паттерн на паттерне

[identity profile] permea-kra.livejournal.com 2013-10-06 12:49 pm (UTC)(link)
> convention over configuration,

Вы так говорите, как будто в этом есть что-то хорошее.

[identity profile] metaclass.livejournal.com 2013-10-06 12:57 pm (UTC)(link)
Ну конкретно в этом месте там все хорошо сделано.
Есть разумные умолчания, они работают, можно переопределить, если нужно.

[identity profile] permea-kra.livejournal.com 2013-10-07 02:42 am (UTC)(link)
Имхо, нужно давать дефолтную конфигурацию и позволять её прикрутить как есть или покопаться внутри. А все эти умолчания прижигать каленым железом.

[identity profile] blackyblack.livejournal.com 2013-10-07 05:02 am (UTC)(link)
А ещё все пейсатели на дотнете пренебрегают документацией. Берёшь библиотеку и пытаешься угадать, какие параметры нужно передавать в метод. А если IOC или Factory, то даже и не пытаешься угадать.

[identity profile] bydl0coder.livejournal.com 2013-10-07 12:49 pm (UTC)(link)
Неплохой? Это ж пиздец, где главное, чего хотели разработчики - написать DSL. Так и я могу.