Python JavaScript | プログラミングの繰り返し処理でマジックナンバーを避ける方法

JavaScript
スポンサーリンク

売上分析 & 顧客ポイント管理のコード例

業務システムでよくある「売上分析」と「顧客ポイント管理」に絞って、Python と JavaScript のベストプラクティス例を紹介します。すべて マジックナンバーを避けるために定数化や変数化 を取り入れています。


1. 月次売上の目標達成チェック

Python

MONTHLY_TARGET = 1_000_000  # 月次売上目標(円)
sales = get_monthly_sales()

if sales >= MONTHLY_TARGET:
    print("目標達成!")
else:
    print("未達成:", sales)
JavaScript

JavaScript

const MONTHLY_TARGET = 1_000_000; // 月次売上目標(円)
const sales = getMonthlySales();

if (sales >= MONTHLY_TARGET) {
  console.log("目標達成!");
} else {
  console.log("未達成:", sales);
}
JavaScript

2. 売上ランキング上位顧客の抽出

Python

TOP_CUSTOMERS_LIMIT = 10  # 上位10人を抽出
customers = get_customers_sorted_by_sales()

top_customers = customers[:TOP_CUSTOMERS_LIMIT]
for customer in top_customers:
    print(customer.name, customer.sales)
Python

JavaScript

const TOP_CUSTOMERS_LIMIT = 10; // 上位10人を抽出
const customers = getCustomersSortedBySales();

const topCustomers = customers.slice(0, TOP_CUSTOMERS_LIMIT);
for (const customer of topCustomers) {
  console.log(customer.name, customer.sales);
}
JavaScript

3. 顧客ポイント付与処理

Python

POINT_RATE = 0.05  # 購入金額の5%をポイント付与
orders = get_orders()

for order in orders:
    points = int(order.amount * POINT_RATE)
    add_points(order.customer_id, points)
Python

JavaScript

const POINT_RATE = 0.05; // 購入金額の5%をポイント付与
const orders = getOrders();

for (const order of orders) {
  const points = Math.floor(order.amount * POINT_RATE);
  addPoints(order.customerId, points);
}
JavaScript

4. ポイント有効期限チェック

Python

EXPIRY_DAYS = 365  # ポイント有効期限(日数)
points = get_customer_points()

for p in points:
    if (today - p.issued_date).days > EXPIRY_DAYS:
        expire_points(p)
Python

JavaScript

const EXPIRY_DAYS = 365; // ポイント有効期限(日数)
const points = getCustomerPoints();

for (const p of points) {
  const daysPassed = (Date.now() - p.issuedDate.getTime()) / (1000 * 60 * 60 * 24);
  if (daysPassed > EXPIRY_DAYS) {
    expirePoints(p);
  }
}
JavaScript

5. 売上トレンド分析(移動平均)

Python

WINDOW_SIZE = 7  # 7日間移動平均
daily_sales = get_daily_sales()

for i in range(len(daily_sales) - WINDOW_SIZE + 1):
    window = daily_sales[i:i + WINDOW_SIZE]
    avg = sum(window) / WINDOW_SIZE
    print(f"Day {i+1}-{i+WINDOW_SIZE}: {avg}")
Python

JavaScript

const WINDOW_SIZE = 7; // 7日間移動平均
const dailySales = getDailySales();

for (let i = 0; i <= dailySales.length - WINDOW_SIZE; i++) {
  const window = dailySales.slice(i, i + WINDOW_SIZE);
  const avg = window.reduce((a, b) => a + b, 0) / WINDOW_SIZE;
  console.log(`Day ${i+1}-${i+WINDOW_SIZE}: ${avg}`);
}
JavaScript

✅ ポイントまとめ

  • 業務要件に直結する定数名MONTHLY_TARGET, TOP_CUSTOMERS_LIMIT, POINT_RATE, EXPIRY_DAYS, WINDOW_SIZE)を使う。
  • 単位を明示(円、日、件数、割合)することで誤解を防ぐ。
  • マジックナンバーを避けることで、要件変更(例: ポイント率を10%に変更)にも柔軟に対応できる。
タイトルとURLをコピーしました