Go でエレガントな関数 API を設計するには、命名規則に従い、パラメーターの型を最適化し、エラーを管理し、テスト容易性を考慮する必要があります。命名規則を使用して関数名とメソッド名を明確に区別し、API カテゴリまたは目的を識別します。パラメーターの型を最適化し、ポインターや値の型の代わりに構造体を使用し、明確な入力パラメーターと出力パラメーターを定義します。エラー タイプを使用して API 呼び出しが失敗した理由を表し、エラー文字列または値を直接返さないようにします。単体テスト可能な関数を作成し、グローバル状態や共有可変データの使用を避けてください。
Go でのエレガントな関数 API の設計
設計された関数 API は直感的で使いやすく、構築に役立ちます保守可能で信頼性の高い機能、拡張されたコードベースが重要です。 Go でこれを行う方法は次のとおりです:
1. 命名規則を使用する
get_
、calculate_
など)。 // Get the current user. func GetCurrentUser() *User { ... } // Calculate the discount for a given user. func CalculateDiscountForUser(user *User) float64 { ... }
2. パラメーターの型を最適化する
type User struct { ID int Name string IsPremium bool } func CreateUser(u *User) error { ... }
3. エラーの管理
error
インターフェイスを使用してください。 errors.Is
および errors.As
を使用して、特定のエラー タイプを確認します。 import "errors" var ErrUserNotFound = errors.New("user not found") func GetUserByID(id int) (*User, error) { ... }
4. テスト容易性を考慮する
import ( "fmt" "io" ) // Logger接口定义了Write方法。 type Logger interface { Write(string) } // FileLogger将日志写入文件。 type FileLogger struct { File *io.File } // Write implements the Logger interface. func (l *FileLogger) Write(msg string) { fmt.Fprintf(l.File, msg) } // NewLogger创建新的日志记录器。 func NewLogger(path string) (Logger, error) { f, err := os.Create(path) if err != nil { return nil, err } return &FileLogger{f}, nil }
実用的なケース: 単純なハッシュ関数 API
ハッシュを生成する関数 API を考えてみましょう:
// Hash计算给定字符串的哈希值。 func Hash(s string) string { ... }
この API は改善できます入力タイプを文字列として宣言し、ハッシュ関数と書式設定関数を分離することにより、次のようになります。
// ComputeHash计算给定字符串的哈希值。 func ComputeHash(s string) []byte { ... } // FormatHash格式化哈希值以进行显示或比较。 func FormatHash(hash []byte) string { ... }
これにより、API の機能を分離し、API の拡張とテストが容易になります。
以上がGolang でエレガントな関数 API を設計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。