ホームページ  >  記事  >  ウェブフロントエンド  >  ハクトーバーフェストウィーク オンラインオークションシステム

ハクトーバーフェストウィーク オンラインオークションシステム

Barbara Streisand
Barbara Streisandオリジナル
2024-10-21 08:25:03304ブラウズ

Hacktoberfest week Online Auction System

概要

ハクトーバーフェストの第 3 週中に、私は小規模だが有望なプロジェクトであるオンライン オークション システムに貢献することにしました。このプロジェクトはまだ初期段階にありますが、すでに成長の可能性を示しており、コードベースの改善を支援する機会があると考えました。私のタスクは、冗長なコードを削減し、全体的な構造を改善して、プロジェクトをより保守しやすく、スケーラブルにすることでプロジェクトをリファクタリングすることでした。

私の課題

私のタスクの主な目的は、反復的なコード パターンを特定し、それらをリファクタリングして、コードベースをよりクリーンで保守しやすくすることでした。コードの冗長性は不整合を引き起こし、将来の更新を困難にし、バグの可能性を高める可能性があります。コードを合理化することで、機能を変えることなく効率を向上させることを目指しました。

主な変更点:

1.一元化された非同期エラー処理: Express.js プロジェクトでよくある問題の 1 つは、非同期ルートでのエラーを処理するための try-catch ブロックの繰り返しです。これに対処するために、すべての非同期関数をラップする asyncHandler というユーティリティ関数を導入しました。これにより、エラーが自動的に捕捉され、アプリ全体で一貫して処理されるようになります。

// utils/asyncHandler.js
const asyncHandler = (fn, errorMessage = "Internal server error") => (req, res, next) =>
  Promise.resolve(fn(req, res, next)).catch((error) => {
    console.error(`Error: ${error.message}`);
    res.status(500).json({ error: errorMessage });
  });

module.exports = asyncHandler;

この変更により、冗長な try-catch ブロックが削除されただけでなく、コードがよりクリーンになり、エラー処理ではなくビジネス ロジックに重点が置かれたようになりました。

2.データベース ユーティリティ関数: プロジェクトには、データベースと直接対話するルートがいくつかあり、多くの場合、同様のクエリを繰り返していました。冗長性を減らすために、購入者の情報の取得やトランザクションの取得など、一般的なデータベース クエリを処理するための再利用可能なユーティリティ関数のセットを作成しました。

// utils/dbUtils.js
const getBuyerById = async (buyerId) => {
  const query = "SELECT * FROM Buyers WHERE Buyer_ID = ";
  const { rows } = await pool.query(query, [buyerId]);
  return rows.length > 0 ? rows[0] : null;
};

const getTransactionsByBuyerId = async (buyerId) => {
  const query = "SELECT * FROM Transactions WHERE Buyer_ID = ";
  const { rows } = await pool.query(query, [buyerId]);
  return rows;
};

module.exports = { getBuyerById, getTransactionsByBuyerId };

各ルートで SQL クエリを直接記述する代わりに、コードベースがこれらのユーティリティ関数に依存できるようになり、重複が減り、ロジックの管理が容易になります。

3.統合応答処理: もう 1 つの改善点は応答処理です。異なるルートでは、成功応答とエラー応答の送信パターンに一貫性がありませんでした。これを標準化するために、send404、send500、sendSuccess などのユーティリティ関数を導入しました。

議論

プロジェクトはまだ初期段階にあるため、簡単に作成できる POST、DELETE、PUT などのルートがいくつか欠落していることに気づきました。しかし、私は自分の問題にのみ固執することにしました。

コメントで教えてください。もっと貢献できるこの種の状況に通常どのように対処しますか? 新しい問題を開きますか、単に作成してプルリクエストを実行しますか?ぜひあなたの体験談を読みたいです。

以上がハクトーバーフェストウィーク オンラインオークションシステムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。