golang 関数のベストプラクティスに違反する反例

王林
リリース: 2024-05-03 12:18:01
オリジナル
546 人が閲覧しました

機能的なベスト プラクティスに従うことが重要です。次の反例は避けてください。 長すぎる関数 docstring のない関数 出力パラメータ 入れ子になった関数が多すぎる関数 エラー値の代わりにエラー コードを返す

golang 関数のベストプラクティスに違反する反例

# Go 言語の違反関数 ベスト プラクティスに対する 5 つの反例

Go で高品質のコードを作成する場合、関数のベスト プラクティスに従うことが重要です。次の反例を避けると、保守しやすく、読みやすく、効率的な関数を作成するのに役立ちます。

1. 関数が長すぎる

func DoEverything(a, b int, c string, d bool) (int, error) { if c == "" { return 0, errors.New("c cannot be empty") } if !d { return 1, errors.New("d must be true") } return a + b, nil }
ログイン後にコピー

ベスト プラクティス:関数をより小さな再利用可能な関数に分割します。

2. ドキュメント文字列のない関数

func DoSomething(x int) int { return x * x }
ログイン後にコピー

ベスト プラクティス:各関数にドキュメント文字列を追加して、その目的、パラメーター、戻り値を説明します。 。

3. 出力パラメータ

func Swap(a, b *int) { tmp := *a *a = *b *b = tmp }
ログイン後にコピー

ベスト プラクティス:コードの理解とデバッグが困難になる可能性があるため、出力パラメータの使用は避けてください。

4. 入れ子関数が多すぎます

func Nested(x int) int { if x > 10 { func inner(y int) int { return y + 1 } return inner(x) } return x }
ログイン後にコピー

ベスト プラクティス:入れ子関数をメイン関数の外に移動するか、クロージャを使用します。

5. 関数はエラー値の代わりにエラー コードを返します

func OpenFile(name string) int { f, err := os.Open(name) if err != nil { return -1 } return f.Fd() }
ログイン後にコピー

ベスト プラクティス:Go 言語の規則に従って、関数はエラー値を返す必要があります。エラーコードの代わりに。

実際的なケース

リストを辞書に変換する必要がある次の関数を考えてみましょう:

// 不遵循最佳实践的示例 func ConvertListToDict(list []string) map[string]bool { dict := make(map[string]bool) for _, v := range list { dict[v] = true } if len(dict) != len(list) { return nil } return dict }
ログイン後にコピー

この関数には次の問題があります:

  • 戻り値はnilですが、docstring にはこのケースが説明されていません。
  • この関数は重複した要素を処理せず、nilを返す際にもあいまいさがあります。

次のベスト プラクティスの例

// 遵循最佳实践的示例 func ConvertListToDict(list []string) (map[string]bool, error) { dict := make(map[string]bool) for _, v := range list { if _, ok := dict[v]; ok { return nil, errors.New("duplicate element in list") } dict[v] = true } return dict, nil }
ログイン後にコピー

この関数は上記の問題を解決し、重複した要素に対してエラー値を返します。

以上がgolang 関数のベストプラクティスに違反する反例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!