Golang に焦点を当てた私の SOLID 原則シリーズの第 1 回へようこそ!このシリーズでは、それぞれの SOLID 設計原則を詳しく解説し、より保守性と拡張性の高い Go アプリケーションの作成に向けてガイドします。 まず、単一責任原則 (SRP) から始めます。これは、各モジュールが単一のタスクを処理することを保証することにより、よりクリーンなコードを強調する基礎となる概念です。 ?
単一責任原則では次のように規定されています。
クラス、モジュール、または関数を変更する理由は 1 つだけである必要があります。
基本的に、各コンポーネントは 1 つの責任に集中する必要があります。 マルチタスク コードは、エラーを発生させずに保守および拡張することが困難になります。 SRP に準拠すると、モジュール性、再利用性、テスト容易性が向上します。
忙しいレストランを考えてみましょう。 顧客満足度を保証する 2 つの重要な役割:
1 人が両方の役割を果たしていると想像してください。シェフは注文を受けるために調理を一時停止します:
このシナリオは非効率的です。 1 人が関係のないタスクをやりくりすると混乱が生じます。
単一責任原則に従います:
この分離により、各個人がそれぞれの役割で優れた能力を発揮できるようになり、より効率的で前向きな食事体験が得られます。 ?✨
レストランの例と同様に、コードは 1 つの責任のみを処理するクラスと関数を構造化する必要があります。これにより、保守性が向上し、変更が加速され、エラーが最小限に抑えられます。
SRP に違反すると、脆弱で管理不能なコードがどのように作成されるかを調べてみましょう。
基本的なコーヒーショップの注文管理システムを考えてみましょう:
<code>package main import "fmt" // Order stores coffee order details. type Order struct { CustomerName string CoffeeType string Price float64 } // ProcessOrder handles multiple responsibilities. func (o *Order) ProcessOrder() { // Handles payment processing fmt.Printf("Processing payment of $%.2f for %s\n", o.Price, o.CustomerName) // Prints receipt fmt.Printf("Receipt:\nCustomer: %s\nCoffee: %s\nAmount: $%.2f\n", o.CustomerName, o.CoffeeType, o.Price) } func main() { order := Order{CustomerName: "John Doe", CoffeeType: "Cappuccino", Price: 4.50} order.ProcessOrder() }</code>
Order
構造体は、データの保存、支払い処理、領収書の印刷を処理しますが、これは明らかな SRP 違反です。側面を変更すると ProcessOrder
に影響があり、保守性が妨げられます。
責任を個別のコンポーネントに分割しましょう:
<code>package main import "fmt" // Order stores coffee order details. type Order struct { CustomerName string CoffeeType string Price float64 } // ProcessOrder handles multiple responsibilities. func (o *Order) ProcessOrder() { // Handles payment processing fmt.Printf("Processing payment of $%.2f for %s\n", o.Price, o.CustomerName) // Prints receipt fmt.Printf("Receipt:\nCustomer: %s\nCoffee: %s\nAmount: $%.2f\n", o.CustomerName, o.CoffeeType, o.Price) } func main() { order := Order{CustomerName: "John Doe", CoffeeType: "Cappuccino", Price: 4.50} order.ProcessOrder() }</code>
Order
はデータを保存します。 PaymentProcessor
は支払いを処理します。 ReceiptPrinter
は領収書を生成します。PaymentProcessor
と ReceiptPrinter
は個別にテストできます。次のような違反を特定します。
単一責任原則 により、コードの理解、保守、拡張が簡素化されます。 これは単なる始まりです! このシリーズの次の投稿では、SOLID の「O」である オープン/クローズの原則 を探ります。
重要な OOP テクニックである依存性の注入に関する私の以前の投稿を参照することもできます。
コーディングを楽しんでください! ?
今後の投稿に関する最新情報を入手するには、フォローしてください:
以上がGolang - シェフとウェイターが単一責任の原則を教える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。