- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
function report1(req, res, next, type) {
if (!req.query || !req.query.name) {
var ct = "Income statement";
if (type == 'pieflow')
ct = 'Pie flow chart';
else if (type == 'barflow')
ct = 'Bar flow chart';
res.redirect(req.url + "?name=" + ctx.i18n(req.session.apiToken, 'cash', ct));
return;
}
var pid = "reports-" + type + "-" + req.query.name;
var vtabs,data,reportSettings;
async.waterfall([
function (cb1) {
async.series([
function(cb2) {
webapp.guessTab(req, {pid: pid, name:req.query.name, url:req.url}, cb2);
},
function(cb2) {
webapp.getTabSettings(req.session.apiToken, pid, cb2);
}
],
function (err, results) {
cb1(null, results[0], results[1]);
});
},
function (vtabs_, reportSettings_, cb1) {
vtabs = vtabs_;
reportSettings = reportSettings_;
if (_.isEmpty(reportSettings) || !reportSettings.version || (reportSettings.version != reportSettingsVersion)){
reportSettings = getDefaultSettings(req.query.name);
webapp.saveTabSettings(req.session.apiToken, pid, reportSettings, function(err){
if (err) console.log(err);
});
}
calculateGraphData(req.session.apiToken,type,reportSettings,cb1);
},
function(data_,cb1){
data = data_;
cb1()
},
function(){
data.tabs = vtabs;
data.pmenu = {name:req.query.name,
items:[{name:webapp.ctx.i18n(req.session.apiToken, 'cash','Page settings'),id:"settings",href:"#"}]}
data.reportSettings = reportSettings;
res.render(__dirname+"/../res/views/report", data);
}],
next
);
};
Прислали мне, значит, вступительное задание на должность разработчика node.js, а там гигантский проект, в который нужно дописать модуль, который выглядит весь так же ужасно, как эта функция. Долго порывался написать, что это самый ужасный код, который я когда-либо видел. http://pastebin.com/4NYccg3Y вот ссылка на весь файл, кому интересно, весь проект палить не буду, но скажу, что он большой и ужасный.
Qwertiy 06.12.2014 12:10 # +4
Twizty 06.12.2014 17:22 # +4
Qwertiy 07.12.2014 05:05 # +1
bormand 07.12.2014 10:45 # 0
Qwertiy 07.12.2014 11:55 # 0
wvxvw 07.12.2014 17:19 # +4
bormand 07.12.2014 17:23 # +1
Отступ фибоначчи?
wvxvw 07.12.2014 17:39 # +1
3.14159265 07.12.2014 18:08 # +2
>>фибоначчи тоже хорошо
Блин. Это великолепно придумано!
Смотрите, ведь определённый профит есть: мы побуждаем такой идентацией не использовать глубокую вложенность.
Типа чем больше вложенность, тем больше платим экранного места — это вынуждает программиста разбивать код на меньшие блоки.
Прозреваю совершенно новый вид табосрачей - с какого члена начинать отсчёт.
Кто-то выступает за 2 пробела, кто-то за 3, кто-то за 5.
bormand 07.12.2014 18:11 # +1
3.14159265 07.12.2014 18:24 # +2
Qwertiy 07.12.2014 17:38 # 0
1024-- 07.12.2014 17:55 # +2
Qwertiy 07.12.2014 18:02 # 0
Fike 06.12.2014 14:29 # +1
bormand 06.12.2014 14:33 # +1
Xom94ok 06.12.2014 16:24 # +1
bormand 06.12.2014 16:31 # +1
bormand 06.12.2014 16:34 # +2
Люди честно показали, с чем именно вам у них придется работать, а вы на них бочку катите... Не надо так.
defecate-plusplus 06.12.2014 16:36 # +1
bormand 06.12.2014 16:37 # +1
defecate-plusplus 06.12.2014 17:08 # 0
поэтому овер 146% ну хорошо, огромная доля проектов выглядят ровно так же
и каждый node.js-ыксперт наблюдает такую фабрику яичной лапши каждый день, в т.ч. в своей любимой ide
bormand 06.12.2014 17:37 # +2
Да простят меня нодовцы.
3.14159265 06.12.2014 18:47 # 0
Единственный плюс - возможность шарить серверную и клиентскую логику, используя одни и те же модули.
Ну и писать весь проджект на одном язычке.
wvxvw 06.12.2014 20:31 # 0
Вот Нода еще не дошла до той кондиции, когда люди это начнут понимать. Пока что нет устоявшихся приемов в языке, и програмы которые на этом пишут выглядят как набор произвольно надерганых решений из практики других языков (обычно плохо понятых ПХП и Руби).
zloirock 07.12.2014 07:42 # +1
bormand 07.12.2014 12:44 # +2
3.14159265 07.12.2014 16:06 # 0
Так тогда пропадает вся соль ноды.
Мы пишем бизнес-логику валидации данных — она должна быть идентичной на клиенте и на сервере.
Мы юзаем один и тот же код и там, и сям. И толку, раз браузер не поддерживает новых фич?
Опять получим джве версии кода: один для новой ноды, другой — кроссбраузерный, и еблю с обеспечением их когерентности.
bormand 07.12.2014 16:23 # 0
А вот юзать генераторы вместо лапшички из function'ов браузеры еще лет 5 не позволят, а в ноде можно уже и сейчас.
Stallman 22.08.2015 14:45 # −1
guest 21.08.2015 11:47 # −1
Stallman 22.08.2015 14:44 # −1
bjjjbjjj 25.08.2021 01:42 # 0