أفضل الممارسات لاستخدام وظيفة مشتركة عبر الهياكل ذات الحقول المتطابقة
في السيناريوهات التي تمتلك فيها بنيتان حقولًا متطابقة، فمن المستحسن منع تكرار التعليمات البرمجية عند تحديد الأساليب التي تعمل في تلك الحقول.
النوع المخصص كمستقبل الطريقة
الأسلوب الموصى به هو تقديم نوع مخصص (على سبيل المثال، الإصدار) الذي يخدم كمستقبل للطريقة. نظرًا لأنه يمكن استخدام جميع الأنواع المخصصة كمستقبلات للطريقة، فإن هذه التقنية تتيح إنشاء طريقة واحدة يمكن تطبيقها على بنيات متعددة.
التركيب
بمجرد التخصيص يتم تعريف النوع، ويمكن دمجه في الهياكل باستخدام التركيب. يتضمن ذلك تضمين النوع المخصص داخل البنيات، مما يؤدي بشكل أساسي إلى إنشاء بنية متداخلة.
مثال
خذ بعين الاعتبار مقتطف التعليمات البرمجية التالي:
type Version string
func (v Version) PrintVersion() {
fmt.Println("Version is", v)
}
type Game struct {
Name string
MultiplayerSupport bool
Genre string
Version
}
type ERP struct {
Name string
MRPSupport bool
SupportedDatabases []string
Version
}
هنا، يعمل نوع الإصدار كمستقبل للطريقة، ويمكن الوصول إلى طريقة PrintVersion الخاصة به من خلال كل من بنيات اللعبة وتخطيط موارد المؤسسات (ERP) نظرًا لحقول الإصدار المضمنة الخاصة بهما.
الاستخدام
يمكن استخدام حقل الإصدار المضمن وتعديله تمامًا مثل أي حقل آخر:
main() {
g := Game{
"Fear Effect",
false,
"Action-Adventure",
"1.0.0",
}
g.PrintVersion() // Version is 1.0.0
e := ERP{
"Logo",
true,
[]string{"ms-sql"},
"2.0.0",
}
e.PrintVersion() // Version is 2.0.0
}
من خلال استخدام هذا الأسلوب، يتم التخلص من تكرار التعليمات البرمجية المرتبطة بالطرق المكررة مع الحفاظ على المرونة وسلامة الكتابة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3