Selamat datang ke ansuran pertama siri prinsip SOLID saya yang memfokuskan pada Golang! Siri ini akan membedah setiap prinsip reka bentuk SOLID, membimbing anda ke arah mencipta aplikasi Go yang lebih boleh diselenggara dan berskala. Kami bermula dengan Prinsip Tanggungjawab Tunggal (SRP) – konsep asas yang menekankan kod yang lebih bersih dengan memastikan setiap modul mengendalikan satu tugasan. ?
Prinsip Tanggungjawab Tunggal menetapkan:
Kelas, modul atau fungsi sepatutnya mempunyai satu sebab sahaja untuk berubah.
Pada asasnya, setiap komponen harus menumpukan pada satu tanggungjawab. Kod berbilang tugas menjadi sukar untuk dikekalkan dan dikembangkan tanpa memperkenalkan ralat. Mematuhi SRP meningkatkan modulariti, kebolehgunaan semula dan kebolehujian.
Pertimbangkan restoran yang sibuk. Dua peranan utama memastikan kepuasan pelanggan:
Bayangkan satu orang melaksanakan kedua-dua peranan. Chef yang berhenti seketika memasak untuk menerima pesanan akan:
Senario ini tidak cekap; satu orang menyulap tugas yang tidak berkaitan membawa kepada huru-hara.
Mengikuti Prinsip Tanggungjawab Tunggal:
Perpisahan ini membolehkan setiap individu untuk cemerlang dalam peranan khusus mereka, menghasilkan pengalaman makan yang lebih cekap dan positif. ?✨
Sama seperti contoh restoran, kod anda harus menstruktur kelas dan fungsi untuk mengendalikan hanya satu tanggungjawab. Ini meningkatkan kebolehselenggaraan, mempercepatkan perubahan dan meminimumkan ralat.
Mari kita periksa bagaimana pelanggaran SRP boleh menghasilkan kod rapuh dan tidak terurus.
Pertimbangkan sistem pengurusan pesanan kedai kopi asas:
<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>
Struktur Order
mengendalikan penyimpanan data, pemprosesan pembayaran dan pencetakan resit – pelanggaran SRP yang jelas. Mengubah suai mana-mana aspek memberi kesan ProcessOrder
, menghalang kebolehselenggaraan.
Mari kita pisahkan tanggungjawab kepada komponen yang berbeza:
<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
menyimpan data; PaymentProcessor
mengendalikan pembayaran; ReceiptPrinter
menjana resit.PaymentProcessor
dan ReceiptPrinter
boleh diuji secara bebas.Kenal pasti pelanggaran seperti:
Prinsip Tanggungjawab Tunggal memudahkan pemahaman, penyelenggaraan dan pengembangan kod. Ini baru permulaan! Siaran seterusnya dalam siri ini meneroka "O" dalam SOLID: Prinsip Terbuka/Tertutup.
Anda juga boleh meneroka siaran saya sebelum ini tentang Suntikan Ketergantungan, teknik OOP yang penting.
Selamat pengekodan! ?
Ikuti saya untuk kemas kini tentang siaran akan datang:
Atas ialah kandungan terperinci Golang - Bagaimana Chef dan Pelayan Mengajar Prinsip Tanggungjawab Tunggal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!