Go Best Practices: هل يجب عليك استخدام طريقة أم دالة؟

أحد القرارات الرئيسية عند إنشاء برنامج Go ، من بين العديد من القرارات الأخرى ، هوكيفية تنظيم وظائف البرنامج.

على وجه الخصوص ، سأشرح في هذه المقالةمتى يجب استخدام طريقة ومتى يجب استخدام وظيفة.

الخياران متشابهان تمامًا في تعريفهما. الاختلاف الوحيد هو أن الطريقة مرتبطة بنوع:

// function
func something(s string) {}

//methods func (MyType) something(s string) {} func (*MyType) something(s string) {}

إذا كنت قادمًا من لغة موجهة للكائنات مثل Ruby أو Python أو PHP الحديثة ، فقد تميل إلى بناء كل التعليمات البرمجية الخاصة بك حول الأنواع والأساليب ، لأن هذه هي الطريقة التي يجبرك بها هذه اللغات على التفكير. لا يوجد شيء خارج الأشياء والأساليب.

إذا جئت من أJavaScriptالخلفية قد تفكر في الأساليب كطرق للنماذج الأولية للكائن ، والتي أعتقد أنها مقارنة جيدة إذا أتيت من JavaScript قديم جيد للفئات السابقة ، في حين أن الوظائف هي مجرد وظائف.

إنها مسألة دولة

لا تعتمد الوظائف على الحالة بأي شكل من الأشكال.

وفقًا للتعريف الرياضي للوظيفة ، بشرط بعض معلمات الإدخال ، ستكون قيم المخرجات هي نفسها دائمًا.

من ناحية أخرى ، ترتبط الطرق ارتباطًا وثيقًا بالنوع الذي ترتبط به ، حيث تحدد سلوكها وتستخدم قيمتها.

يحصلون على بعض القيمة من النوع الذي تم تعريفهم مقابله ، وإذا كان لديهم مستقبلات مؤشر ، فإنهم يتلاعبون بحالته.

إذا كانت أساليبك لا تعتمد على الحالة ، فمن المحتمل أن يتم تعريفها على أنها وظائف.

الاعتمادات

مستوحى من حديث ستيف فرانسيا "7 أخطاء شائعة في Go وكيفية تجنبها":