Примеры функций
Для написания функций и методов можно использовать следующий шаблон:
Код:
/** Что функция делает
* @param arg Описание переменной
* @returns Что функция возвращает
*/
function myFunc(arg: number | undefined): number | undefined {
/* 1. Проверка входных данных */
/* 2. Подготовка, вычисление данных */
/* 3. Запуск внешних функций */
/* 4. Возвращение результата */
}
Рассмотрим на примере функции для расчёта длительности периода:
Код:
/** Рассчитать длительность
* @param firstDate Первая дата
* @param secondDate Вторая дата
* @returns Продолжительность в днях
*/
function calcDuration(firstDate: TDatetime | undefined, secondDate: TDatetime | 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;
}
Данный шаблон позволит вам сократить затраты на поддержку решения. Если кому-то придётся разбирать ваш код, это не будет так болезненно. Добавление комментария к функции в таком виде будет отображаться во всплывающих подсказках:
Комментарии внутри кода и обработку ошибок можно опустить.
Вот ещё один хороший пример реализации этого функционала:
Код:
/** Рассчитать длительность
* @param firstDate Первая дата
* @param secondDate Вторая дата
* @returns Продолжительность в днях
*/
function calcDuration(
firstDate: TDatetime | undefined,
secondDate: TDatetime | undefined
): number | undefined {
if (!firstDate || !secondDate) {
return;
}
const duration = firstDate.sub(secondDate);
return Math.round(Math.abs(duration.days));
}