1. JavaScript / Говнокод #17374

    +156

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    router.get('/', function(req, res){
        apis.getApis(function (data, error) {
            res.render('./documentation/index',
                {
                    error: error,
                    apis: data
                });
            });
        }
    );

    Сказали напилить на ноде сайтик, который генерит документацию из ответа сервера с API. Сижу и бомблю с количества лишних действий в контроллере из-за обязательных ФУНКЦИЙ ОБРАТНОГО ВЫЗОВА.

    Запостил: heyzea1, 26 Декабря 2014

    Комментарии (15) RSS

    • exports.getApis = function (callback) {
          restler.post(config.api.getApiUrl, {timeout:config.api.timeout}).on('complete', function(data) {
              var info = groupByGroupName(data);
              return callback(null, info);
          }).on('error', function(error) {
              return callback(error, null)
          }).on('timeout', function() {
              return callback({'error':'Timeout'}, null)
          });
      };

      Интересно, мне одному кажется, что вариант с try @ catch (особенно с рубишным \ питоновским синтаксисом) пишется, а главное, читается в разы лучше?
      Ответить
    • У ноды же были какие-то способы писать это мало-мальски линейно. Что-то типа:
      sequence([
          function (x) {
          },
          function (y) {
          },
          function (z) {
          }
      ],
      function (e) {
          // ошибка
      })
      Ответить
      • А в браузеры это завезут?
        Ответить
        • Да это вроде либа какая-то. Так что и в браузерах должно прокатить, если подключить её.
          Ответить
    • Use Promises, Luke!
      Ответить
      • Я вкурсе за Promises и почитал за sequence. Но обязательный пердолинг с этим меня совсем не вдохновляет.
        Ответить
    • Можно посмотреть в сторону fibers, например в серверной части метеора можно писать без колбеков и ловить исключения, а с кофе и синтаксис приятен.
      Ответить
      • Да и не только в метеоре он используется. Точнее если объекты/функции написаны в стандартном нодовском стиле, то завернуть их в синхронные вообще не проблема, делается это одним вызовом, мне короче, понравилось его использовать, к тому же в либе еще несколько нищтяков есть.
        Ответить
      • > с кофе и синтаксис приятен
        Вот жаль, что в это питоничненькое одеяло, скрывающее голую жс-правду, не встроили async/await*. Ну, вроде бы новый язык, удобство, простота и другие рекламные лозунги. Всё равно же парсить и генерировать код надо, добавили б ещё пару словечек для простоты и удобства...

        -----------------------------------
        * ладно, в другое питоничненькое одеяло встроили, всё хорошо
        Ответить
        • Какое?
          Ответить
          • Вы о чём? Если про другое питоничненькое одеяло, то я про IcedCoffeeScript.
            Ответить
            • >про другое питоничненькое одеяло,
              Да.
              > я про IcedCoffeeScript.
              Никогда не слышал.
              Ответить

    Добавить комментарий