بله، در اینجا مثالهایی برای اصول DRY، KISS، YAGNI و Demeter با زبان برنامهنویسی Go آورده شده است:
1. DRY (Don’t Repeat Yourself)
در اصل DRY از تکرار کد جلوگیری میشود. در Go میتوانیم این کار را با استفاده از توابع و بازنویسی کد انجام دهیم.
کد تکراری:
// کد تکراری
func calculateRectangleArea(length, width float64) float64 {
return length * width
}
func calculateSquareArea(side float64) float64 {
return side * side
}
اصلاحشده با DRY:
// حذف تکرار
func calculateArea(shape string, dimensions ...float64) float64 {
if shape == "rectangle" {
return dimensions[0] * dimensions[1]
} else if shape == "square" {
return dimensions[0] * dimensions[0]
}
return 0
}
2. KISS (Keep It Simple, Stupid)
اصل KISS به سادگی کد تأکید دارد. در اینجا از پیچیدگی اضافی جلوگیری میشود.
کد پیچیده:
// بررسی عدد زوج
func isEven(n int) bool {
if n % 2 == 0 {
return true
} else {
return false
}
}
اصلاحشده با KISS:
// بررسی سادهتر
func isEven(n int) bool {
return n % 2 == 0
}
3. YAGNI (You Aren’t Gonna Need It)
اصل YAGNI به این معناست که نباید کدی بنویسید که ممکن است در آینده به آن نیاز نداشته باشید.
کد غیرضروری:
// تابع با ویژگیهای غیرضروری
func processData(data string, format string, sort bool, unusedFeature string) {
if format == "JSON" {
// پردازش دادهها
}
}
اصلاحشده با YAGNI:
// حذف ویژگی غیرضروری
func processData(data string, format string) {
if format == "JSON" {
// پردازش دادهها
}
}
4. Law of Demeter
اصل دمتر میگوید که باید فقط با واحدهای “مستقیم” کار کنید و از فراخوانی زنجیرهای اجتناب کنید.
کد ناقض اصل دمتر:
// زنجیرهای از فراخوانیها
func getCity(user User) string {
return user.GetProfile().GetAddress().GetCity()
}
اصلاحشده با رعایت دمتر:
// فراخوانی سادهتر
func getCity(user User) string {
address := user.GetAddress()
return address.GetCity()
}
خلاصه:
- DRY: از کد تکراری جلوگیری کنید و کد را به صورت توابع مشترک و قابل استفاده مجدد بنویسید.
- KISS: کد ساده و قابل فهم بنویسید.
- YAGNI: فقط آنچه که نیاز دارید بنویسید و از کد غیرضروری خودداری کنید.
- Demeter: از وابستگیهای غیرضروری بین اشیاء جلوگیری کنید.