Как разработать расширяемый код агрегации данных, чтобы избежать ручных обновлений в нескольких местах?Javascript

Форум по Javascript
Ответить
Anonymous
 Как разработать расширяемый код агрегации данных, чтобы избежать ручных обновлений в нескольких местах?

Сообщение Anonymous »

У меня есть функция агрегации данных, которая собирает статистику из нескольких источников. Проблема заключается в том, что всякий раз, когда я добавляю новую метрику, мне нужно вручную обновить код в трех разных местах, что является подверженным ошибкам и трудно поддерживать.

Код: Выделить всё

// Part 1: Initialize data object
const storeData = {
collectors_count: 0,
toys_count: 0,
toys_inspected: 0,
toys_cleaned: 0,
inspection_percent: 0,
cleaning_percent: 0,
};

// Part 2: Accumulate data from each source
for (const collector of collectors) {
const details = await db.getCollectorDetails(collector.id);

if (!details) continue;

storeData.collectors_count++;
storeData.toys_count += details.toy_count;
storeData.toys_inspected += details.inspected_count;
storeData.toys_cleaned += details.cleaned_count;
}

// Part 3: Calculate derived metrics
storeData.inspection_percent = (storeData.toys_inspected / storeData.toys_count) * 100;
storeData.cleaning_percent = (storeData.toys_cleaned / storeData.toys_count) * 100;

return storeData;

Проблема:
  • Когда я хочу добавить новую метрику (например, toys_repaired ), я должен:
  • Добавить его к первоначальному объекту 0
  • ancupat storedata.toys_repaired += details.repaired_count
  • Возможно, добавьте логику расчета, если это полученная метрика: stordataTa.repair_percent = ...
Это становится тремя со многими межответствующими, и я забывает. /> Есть ли способ реорганизовать этот код, чтобы быть более расширяемым и обслуживаемым? < /p>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -in-multip
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»