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] 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)
Как-то по-хипстерски. :)