ホームページ > ウェブフロントエンド > jsチュートリアル > クリーンコードの理解: 処理 ⚡

クリーンコードの理解: 処理 ⚡

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2024-08-22 18:56:22
オリジナル
726 人が閲覧しました

Understanding Clean Code: Handling ⚡

エラー処理は、堅牢で信頼性の高いソフトウェアを作成する上で重要な側面です。ただし、慎重に行わないと、コードが乱雑になり、読みにくく、保守しにくくなる可能性があります。

『クリーン コード』の第 7 章では、コードを乱雑にしないエラー処理手法について詳しく説明し、明確さと単純さを強調します。

この記事では、この章の重要な概念と、それを JavaScript に適用してコードベースをクリーンで保守しやすい状態に保つ方法について説明します。


? 1. エラーコードではなく例外を使用する

クリーン コードの重要な原則の 1 つは、エラー コードよりも例外を優先することです。

例外を使用すると、エラー処理ロジックをメイン ロジックから分離できるため、コードが読みやすくなります。

例: エラー コードを避ける

function getUser(id) {
    const user = database.findUserById(id);
    if (user === null) {
        return -1;  // Error code for user not found
    }
    return user;
}

const result = getUser(123);
if (result === -1) {
    console.error('User not found');
} else {
    console.log(result);
}
ログイン後にコピー

この例では、エラー処理がメイン ロジックと絡み合っているため、理解するのが難しくなります。

例: 例外を使用する

function getUser(id) {
    const user = database.findUserById(id);
    if (user === null) {
        throw new Error('User not found');
    }
    return user;
}

try {
    const user = getUser(123);
    console.log(user);
} catch (error) {
    console.error(error.message);
}
ログイン後にコピー

例外を使用することで、エラー処理ロジックをメイン ロジックから分離し、コードをよりクリーンで理解しやすくします。


? 2. 意味のあるメッセージを含むコンテキストを提供する

例外をスローするときは、エラーに関するコンテキストを示す意味のあるエラー メッセージを提供することが重要です。

これは、コードを詳しく調べる必要がなく、問題を迅速に診断するのに役立ちます。

例: エラー メッセージにコンテキストを提供する

function getUser(id) {
    const user = database.findUserById(id);
    if (user === null) {
        throw new Error(`User with ID ${id} not found`);
    }
    return user;
}

try {
    const user = getUser(123);
    console.log(user);
} catch (error) {
    console.error(error.message);  // Outputs: User with ID 123 not found
}
ログイン後にコピー

説明的なエラー メッセージは、問題をすぐに理解するために必要なコンテキストを提供します。


? 3. Null を返さない

null を返すと、追跡が困難な null 参照エラーが発生する可能性があります。

null を返す代わりに、例外をスローするか、デフォルトの動作を提供する特殊なケース パターンを使用することを検討してください。

例: Null を返さないようにします

function getUser(id) {
    const user = database.findUserById(id);
    if (user === null) {
        return null;  // This can lead to null reference errors
    }
    return user;
}

const user = getUser(123);
if (user !== null) {
    console.log(user.name);
}
ログイン後にコピー

null を返すには追加のチェックが必要となり、コードが煩雑になる可能性があります。

例: 例外をスローするか、特殊なケースを使用する

function getUser(id) {
    const user = database.findUserById(id);
    if (user === null) {
        throw new Error(`User with ID ${id} not found`);
    }
    return user;
}

// OR

class NullUser {
    get name() {
        return 'Guest';
    }
}

function getUser(id) {
    const user = database.findUserById(id);
    return user || new NullUser();
}
ログイン後にコピー

例外をスローするか、特殊なケースのオブジェクト (NullUser など) を使用すると、null 参照エラーを回避し、コードをクリーンに保つことができます。


? 4. Try-Catch-Finally は控えめに使用する

try-catch-finally ブロックは例外を処理するために不可欠ですが、使いすぎるとコードが乱雑になる可能性があります。

必要な場合にのみ使用し、深くネストされたブロックは避けてください。

例: 過剰な Try-Catch を避ける

try {
    const data = JSON.parse(input);
    try {
        const user = getUser(data.id);
        try {
            sendEmail(user.email);
        } catch (error) {
            console.error('Failed to send email:', error.message);
        }
    } catch (error) {
        console.error('User retrieval failed:', error.message);
    }
} catch (error) {
    console.error('Invalid JSON:', error.message);
}
ログイン後にコピー

このコードは、複数のネストされた try-catch ブロックがあるため、従うのが困難です。

例: 乱雑さを減らすためのリファクタリング

function parseInput(input) {
    try {
        return JSON.parse(input);
    } catch (error) {
        throw new Error('Invalid JSON');
    }
}

function retrieveUser(data) {
    return getUser(data.id);
}

function notifyUser(user) {
    sendEmail(user.email);
}

try {
    const data = parseInput(input);
    const user = retrieveUser(data);
    notifyUser(user);
} catch (error) {
    console.error(error.message);
}
ログイン後にコピー

ロジックを個別の関数に分割することで、ネストが減り、読みやすさが向上します。


? 5. キャッチした例外を無視しない

例外をキャッチした場合は、必ず適切に処理してください。

例外を黙って無視すると、予期しない動作が発生し、デバッグが困難になる可能性があります。

例: 例外を無視しない

try {
    const user = getUser(123);
} catch (error) {
    // Ignoring the exception
}
ログイン後にコピー

例外を無視すると、コード内の潜在的な問題が隠れてしまう可能性があります。

例: 例外を処理またはログに記録する

try {
    const user = getUser(123);
} catch (error) {
    console.error('An error occurred:', error.message);
}
ログイン後にコピー

例外を処理またはログに記録することで、問題を認識し、それに応じて対処できるようになります。


⚡ 結論

クリーンで保守可能な JavaScript コードを作成するには、効果的なエラー処理が不可欠です。

クリーン コードの原則 (エラー コードの代わりに例外を使用する、エラー メッセージにコンテキストを提供する、null を返すことを回避する、try-catch を控えめに使用する、キャッチされた例外を無視しないなど) に従うことで、エラー処理ロジックを確実に実行できます。堅牢かつ目立たないものです。

コーディングを楽しんでください!

以上がクリーンコードの理解: 処理 ⚡の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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