Rumah > pembangunan bahagian belakang > Golang > Contoh balas yang melanggar amalan terbaik fungsi golang

Contoh balas yang melanggar amalan terbaik fungsi golang

王林
Lepaskan: 2024-05-03 12:18:01
asal
658 orang telah melayarinya

Mengikuti amalan terbaik berfungsi adalah kritikal. Elakkan contoh balas berikut: Fungsi yang terlalu panjang Fungsi tanpa docstring Parameter output Fungsi bersarang Terlalu banyak fungsi Mengembalikan kod ralat dan bukannya nilai ralat

Contoh balas yang melanggar amalan terbaik fungsi golang

5 contoh balas yang melanggar amalan terbaik fungsi bahasa Go

dalam penulisan Go

tinggi -kod kualiti dalam bahasa, adalah penting untuk mengikuti amalan terbaik berfungsi. Mengelakkan contoh balas berikut boleh membantu anda menulis fungsi yang boleh diselenggara, boleh dibaca dan cekap.

1. Fungsi yang terlalu panjang

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
}
Salin selepas log masuk
Amalan terbaik:

Pecahkan fungsi kepada fungsi yang lebih kecil dan boleh digunakan semula.

2. Fungsi tanpa docstrings

func DoSomething(x int) int {
    return x * x
}
Salin selepas log masuk
Amalan terbaik:

Tambahkan docstrings pada setiap fungsi yang menerangkan tujuan, parameter dan nilai pulangannya.

3. Parameter Output

func Swap(a, b *int) {
    tmp := *a
    *a = *b
    *b = tmp
}
Salin selepas log masuk
Amalan Terbaik:

Elakkan menggunakan parameter output kerana ia menjadikan kod sukar difahami dan nyahpepijat.

4. Terlalu banyak fungsi bersarang

func Nested(x int) int {
    if x > 10 {
        func inner(y int) int {
            return y + 1
        }
        return inner(x)
    }
    return x
}
Salin selepas log masuk
Amalan terbaik:

Alihkan fungsi bersarang daripada fungsi utama, atau gunakan penutupan.

5. Fungsi mengembalikan kod ralat dan bukannya nilai ralat

func OpenFile(name string) int {
    f, err := os.Open(name)
    if err != nil {
        return -1
    }
    return f.Fd()
}
Salin selepas log masuk
Amalan terbaik:

Menurut konvensyen bahasa Go, fungsi harus mengembalikan nilai ralat dan bukannya kod ralat.

Contoh Praktikal

Pertimbangkan fungsi berikut yang perlu menukar senarai kepada kamus:

// 不遵循最佳实践的示例
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
}
Salin selepas log masuk

Fungsi ini mempunyai masalah berikut:
  • nil,但文档字符串未说明此情况。
  • 函数不处理重复元素,返回 nilNilai pulangan ialah nil, tetapi docstring tidak menyatakan Syarat ini.
Fungsi ini tidak mengendalikan elemen pendua, dan terdapat juga kesamaran dalam mengembalikan nil.

Contoh mengikuti amalan terbaik

// 遵循最佳实践的示例
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
}
Salin selepas log masuk
🎜Fungsi ini menyelesaikan masalah di atas dan mengembalikan nilai ralat untuk elemen pendua. 🎜

Atas ialah kandungan terperinci Contoh balas yang melanggar amalan terbaik fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan