...

Глава 4. Сценарии

Тема в разделе "Руководство по настройке форм и сценариев", создана пользователем ELMA365, 15 авг 2023.

  1. ELMA365

    ELMA365 Moderator

    Примеры функций

    Для написания функций и методов можно использовать следующий шаблон:
    Код:
    
    /** Что функция делает
    * @param arg Описание переменной
    * @returns Что функция возвращает
    */
    function myFunc(argnumber undefined): number undefined {
        
    /* 1. Проверка входных данных */
        /* 2. Подготовка, вычисление данных */
        /* 3. Запуск внешних функций */
        /* 4. Возвращение результата */
    }
    Рассмотрим на примере функции для расчёта длительности периода:
    Код:
    
    /** Рассчитать длительность
    * @param firstDate Первая дата
    * @param secondDate Вторая дата
    * @returns Продолжительность в днях
    */
    function calcDuration(firstDateTDatetime undefinedsecondDateTDatetime undefined): number undefined {
        
    /* 1. Проверка входных данных */
        
    if (!firstDate) {
            return;
        }
        if (!
    secondDate) {
            return;
        }
        
    /* 2. Подготовка, вычисление данных */
        
    const duration firstDate.sub(secondDate);
        
    /* 3. Запуск внешних функций */
        
    let result 0;
        try { 
    // Старайтесь обрабатывать ошибки от внутренних зависимостей
            
    result Math.round(Math.abs(duration.days));
        }
        catch(
    err) {
            return 
    Number.NaN;
        }
        
    /* 4. Возвращение результата */
        
    return result;
    }
    Данный шаблон позволит вам сократить затраты на поддержку решения. Если кому-то придётся разбирать ваш код, это не будет так болезненно. Добавление комментария к функции в таком виде будет отображаться во всплывающих подсказках:

    [​IMG]

    Комментарии внутри кода и обработку ошибок можно опустить.

    Вот ещё один хороший пример реализации этого функционала:
    Код:
    
    /** Рассчитать длительность
    * @param firstDate Первая дата
    * @param secondDate Вторая дата
    * @returns Продолжительность в днях
    */
    function calcDuration(
      
    firstDateTDatetime undefined,
      
    secondDateTDatetime undefined
    ): number undefined {
        if (!
    firstDate || !secondDate) {
            return;
        }
        const 
    duration firstDate.sub(secondDate);
        return 
    Math.round(Math.abs(duration.days));
    }