Pull to refresh

Comments 16

Ну начнем с того что ваш код не читаемый абсолютно. Понять алгоритм в такой адовой вложенности легко только тому кто это пишет.

Согласен, что непривычно читать, но только с первого раза и тому, кто не знаком с промисами — такова цена асинхронности.

Нет, это вина ни разу не асинхронности и промисов, а только вашего плохого стиля кода.

Готов выслушать конкретные советы

Ну как минимум поменять анонимки для промисов на конкретные вспомогательные методы или функции.


Вынести шаблоны ответов так же во вспомогательные функции, ну и вообще разбить код методов.


Код вида:


if (condition) {
    //...
    //много логики
    //...
} else {
   // какая-то команда выхода например return;
}

сменить на


if (! condition) {
  //команда выхода
}

//дальше логика

Ну и т.п.

Мне не всегда легче читать чужой код, через вспомогательные методы и функции, тем более если они повторяются одинажды. Легче читать всё за один раз сверху вниз, чем клацать — переходить в объявления методов, потом обратно возвращаться. По мне — удобнее прочитать комментарий о смылсе анонимки в самом начале. К совету о выходе из метода при не соблюдении условия прислушаюсь, спасибо!
Так же, если вникнуть в код, можно заметить, что есть переменные из локального scope. Если вынести анонимные функции в вспомогательные функции — нужно будет постоянно передавать несколько объектов в параметрах (в некоторых случаях — некоторые будут лишними), ждать результатов ответов.
А почему используете Node.js — 0.12.4. На дворе уже Node v6 в lts с нативными Promise.
Ну и с кодом надо что-то делать, соглашусь что его читать невозможно.
Проекту больше 2х лет. Переводить на 6 версию ноды нет времени, но не мешало бы, тем более es6 — поприятнее.
У вас в проекте какие-то специфичные вещи старой ноды используются? Если нет — поднимайте до 7 вместе с async/await, как упомянули ниже, либо на 6 с транспайлингом того же async/await в генераторы.

и седьмая с async/await...

Макконнелл, Макконнелл и еще раз Макконнелл.

Стыдно должно быть такое в паблик выкладывать.
У меня ощущение что качество статей про программирование на хабре упало.
Node.js — 0.12.4

Вы точно уверены, что вам в продакшне не нужны исправления безопасности Node.js и OpenSSL?

ну время на фикс багов из-за несовместимости никто не выделял. Проект работает и зарабатывает деньги заказчику, если я сейчас начну переходить на Node v6 — начнут теряться деньги. Заказчику нужна стабильная работа проекта. Как будет первый прецедент по взлому через существующие дыры 0.12.4 — будем общаться насчёт перевода проекта.
Sign up to leave a comment.

Articles