1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Goのコードの見通しの良さについて(happy path)

Last updated at Posted at 2024-01-12

はじめに

ハッピーパスとは、プログラムがエラーや例外なしに順調に動作する、最も一般的な処理フローのこと。開発では、このハッピーパスを明確にし、エラーハンドリングを効率的に行うことが重要だと思います。

改善前のコード

下記のようなコードがあるとして、これは一般的に見ると結構見にくいコードだと思います。このコードでは、ネストが深くなっており、ハッピーパスが明確ではないと思います。エラー処理とメインの処理が混在しているため、読みにくい構造になっています。

func ProcessData(data *Data) (*Result, error) {
    if data != nil {
        processedData, err := processData(data)
        if err != nil {
            return nil, err
        } else {
            result, err := createResult(processedData)
            if err != nil {
                return nil, err
            } else {
                return result, nil
            }
        }
    } else {
        return nil, errors.New("data is nil")
    }
}

改善後のコード

改善後は、コードが左側に保たれ、エラー処理が簡潔でGoらしいコードになっています。それにより、コードの読みやすさとメンテナンス性が向上しています。早期リターンを使用して、ネストを減らし、コードの見通しを良くしています。

func ProcessData(data *Data) (*Result, error) {
    if data == nil {
        return nil, errors.New("data is nil")
    }
    processedData, err := processData(data)
    if err != nil {
        return nil, err
    }
    result, err := createResult(processedData)
    if err != nil {
        return nil, err
    }
    return result, nil
}

まとめ

ハッピー パスは、エラーや例外がなく順調に動作する処理フローを指し、効率的なエラーハンドリングとコードの可読性の向上に役立ちます。改善前のコード例と改善後のコード例を比較することで、ハッピー パスの重要性とその具体的な実装方法が理解できます。このアプローチにより、コードはより読みやすく、保守しやすくなります。参考文献として、Mat Ryerによる記事を読んで参考にしました。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?