クリーンなコードの技術: 保守可能な JavaScript を書くための実践ガイド

Susan Sarandon
リリース: 2024-11-23 06:33:12
オリジナル
597 人が閲覧しました

The Art of Clean Code: A Practical Guide to Writing Maintainable JavaScript

クリーンなコードの技術: 保守可能な JavaScript を作成するための実践的なガイド。

紹介:

きれいなコードを書くことは、単なる見た目の選択ではなく、バグを減らし、コラボレーションを強化し、ソフトウェア プロジェクトの長期的な保守性を確保するための基本的な実践です。このガイドでは、クリーンな JavaScript コードを記述するための原則、実践方法、実用的なアプローチについて説明します。

基本原則

1.読みやすさ第一

コードは書かれるよりもはるかに頻繁に読み取られます。優れたコードは、他の開発者 (将来の自分を含む) が簡単に理解できるストーリーを伝えます。

悪い:

const x = y + z / 3.14;
ログイン後にコピー

良い:

const radius = diameter / Math.PI;
ログイン後にコピー

2.保守性が重要

保守可能なコードはモジュール式であり、SOLID 原則に従い、依存関係を最小限に抑えます。

悪い:

function calculateArea(radius) {
    // ...lots of nested logic...
    // ...complex calculations...
    // ...multiple responsibilities...
    return result;
}
ログイン後にコピー

良い:

function calculateArea(radius) {
    return Math.PI * radius * radius;
}
ログイン後にコピー

3.テスト容易性

クリーンなコードは本質的にテスト可能です。複雑な操作をより小さな検証可能な単位に分割します。

悪い:

function getRandomNumber() {
    return Math.random();
}
ログイン後にコピー

良い:

function getRandomNumber(randomGenerator = Math.random) {
    return randomGenerator();
}
ログイン後にコピー

4.スケーラビリティ

クリーンなコードはプロジェクトとともに順調に成長します。

悪い:

function handleUserData(data) {
    if (data.type === 'admin') {
        // 50 lines of admin logic
    } else if (data.type === 'user') {
        // 50 lines of user logic
    } else if (data.type === 'guest') {
        // 50 lines of guest logic
    }
}
ログイン後にコピー

良い:

const userHandlers = {
    admin: handleAdminData,
    user: handleUserData,
    guest: handleGuestData
};

function handleUserData(data) {
    return userHandlers[data.type](data);
}
ログイン後にコピー

よくある落とし穴と解決策:

1.ネーミングのジレンマ

名前は意図とコンテキストを明らかにする必要があります。
悪い:

function calc(a, b) {
    return a * b + TAX;
}
ログイン後にコピー

良い:

function calculatePriceWithTax(basePrice, taxRate) {
    const TAX_MULTIPLIER = 1;
    return basePrice * taxRate + TAX_MULTIPLIER;
}
ログイン後にコピー

2.コールバック地獄を回避する

ネストされたコールバックを最新の非同期パターンに置き換えます。

悪い:

getUserData(userId, function(user) {
    getOrders(user.id, function(orders) {
        processOrders(orders, function(result) {
            // More nesting...
        });
    });
});
ログイン後にコピー

良い:

async function processUserOrders(userId) {
    try {
        const user = await getUserData(userId);
        const orders = await getOrders(user.id);
        return await processOrders(orders);
    } catch (error) {
        handleError(error);
    }
}
ログイン後にコピー

3.構成の管理

構成値の信頼できる単一の情報源を確立します。

悪い:

// Scattered across multiple files
const API_KEY = 'abc123';
const API_ENDPOINT = 'https://api.example.com';
ログイン後にコピー

良い:

// config.js
export const config = {
    api: {
        key: process.env.API_KEY,
        endpoint: process.env.API_ENDPOINT
    }
};
ログイン後にコピー

実用的なトレードオフ:

パフォーマンスと可読性

可読性とパフォーマンスのニーズのバランスをとる:

// More readable, slightly less performant
const doubledNumbers = numbers.map(n => n * 2);

// Less readable, more performant (when performance is critical)
for (let i = 0; i < numbers.length; i++) numbers[i] *= 2;
ログイン後にコピー

純粋な機能と副作用

純粋な関数は理想的ですが、実際のアプリケーションには副作用が必要です。慎重に隔離して管理してください:

// Pure function
function calculateTotal(items) {
    return items.reduce((sum, item) => sum + item.price, 0);
}

// Necessary side effect, clearly isolated
async function saveOrderToDatabase(order) {
    await database.orders.save(order);
    logOrderCreation(order);
}
ログイン後にコピー

ベストプラクティス:

1.意味のある名前を使用してください

  • 変数はその目的を示す必要があります
  • 関数はそのアクションを説明する必要があります
  • クラスはそのエンティティを表す必要があります

2.関数を小さく保つ

  • 各関数は 1 つのことをうまく実行する必要があります
  • 関数ごとに 20 行以下を目指します
  • 複雑なロジックを個別の関数に抽出します

3.マジックナンバーを避ける

  • すべての数値に名前付き定数を使用する
  • 設定オブジェクト内のグループ関連の定数

4.エラーを適切に処理する

  • try/catch ブロックを適切に使用する
  • 意味のあるエラー メッセージを提供する
  • エラー回復戦略を検討する

結論:

クリーンなコードは目的地ではなく旅です。完璧なクリーンさは達成できないかもしれませんが、一貫したプラクティスと実際的なトレードオフを通じてクリーンなコードを目指す努力は、より保守しやすく、信頼性が高く、協調的なコードベースにつながります。コンテキストが重要であることを忘れないでください。ある状況ではクリーンでも、別の状況ではクリーンではない可能性があります。重要なのは、他の人 (将来の自分を含む) が書いたことに感謝するコードを維持しながら、特定のニーズに合わせた適切なバランスを見つけることです。

? LinkedIn で私とつながりましょう:

一緒にソフトウェア エンジニアリングの世界を深く掘り下げてみましょう!私は、JavaScript、TypeScript、Node.js、React、Next.js、データ構造、アルゴリズム、Web 開発などに関する洞察を定期的に共有しています。スキルを向上させたいと考えている場合でも、エキサイティングなトピックで共同作業したいと考えている場合でも、私はあなたとつながり、一緒に成長したいと思っています。

フォローしてください: ノジブル・イスラム

以上がクリーンなコードの技術: 保守可能な JavaScript を書くための実践ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート