ما هي أفضل الممارسات عند البرمجة عضو وظيفة ؟

StackOverflow https://stackoverflow.com/questions/165474

  •  03-07-2019
  •  | 
  •  

سؤال

لقد رأيت وظائف الأعضاء مبرمج سواء داخل الصف أنها تنتمي إلى خارج الصف مع وظيفة النموذج داخل الصف.لدي فقط من أي وقت مضى برمجتها باستخدام الأسلوب الأول, ولكن أتساءل عما إذا كان من الأفضل استخدام الآخرين أو مجرد تفضيل شخصي ؟

هل كانت مفيدة؟

المحلول

على افتراض انك تقصد C++, فمن الأفضل دائما أن تحدد الوظائف خارج الفصل لأنه إذا وضعته داخل الفصل المترجم قد حاول مضمنة ، وهي ليست دائما مرغوب فيه:

  1. زيادة في حجم التعليمات البرمجية (كل كائن ملف يتضمن هذا الرأس قد ينتهي مع نسخة من وظيفة في التعليمات البرمجية الخاصة بهم).
  2. كسر التوافق الثنائي عند تعريف الدالة التغييرات.

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

نصائح أخرى

لC ++، ووضع تعريفات الأسلوب في ملف الرأس يعني أن كل ما يتضمن رأس معينة يجب أن يكون recompiled عند تغيير رأس - حتى لو كان مجرد تفصيل تطبيق.

ونقل تعريفات من رأس يعني أن الملفات التي تشمل رأس ستكون هناك حاجة إلى معاد فقط عندما يتغير رأس نفسه (إضافة وظائف / إزالة، أو تغييرها الإعلانات). هذا يمكن أن يكون لها تأثير كبير على مرات التحويل البرمجي لمشاريع معقدة.

وهناك مزايا لكلا التقنيات.

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

ووضع رمز مباشرة في تعريف الفئة يجعل من أبسط لاستخدام فئة، لديك فقط ل# تضمين رأس. وهذا مفيد خصوصا (الضرورة) مع فئات قالب.

وعلى افتراض أن اللغة هي C ++:

وخلاصة القول هو أن تفضيل شخصي. داخل الطبقة أقصر عموما وأكثر مباشرة، خاصة بالنسبة لل

int getFoo() const { return _foo; }

ونوع الوظيفة. خارج الشركة المصرية للاتصالات من الدرجة، ويمكن إزالة "فوضى" من تعريف الفئة.

ولقد رأيت على حد سواء في استخدام ...

وبطبيعة الحال، وظائف غير inlined دائما خارج الصف.

ومن الشائع أيضا أن يمزج كل من الأنماط عند تحديد فئة. للحصول على طرق بسيطة تتكون من 1 أو 2 خطوط من الشائع ومريحة لتحديد الجسم طريقة في تعريف الفئة. لمزيد من طرق طويلة فمن الأفضل لتحديد هذه خارجيا. سيكون لديك تعريفات فئة أكثر قابلية للقراءة دون التبعثر لهم حتى مع الجسم الأسلوب.

وإخفاء تنفيذ أسلوب مفيد في هذا لن يصرف المستخدم من الطبقة التي كتبها التنفيذ الفعلي، أو افتراضات حول تنفيذ ذلك قد يتغير في وقت لاحق.

وأفترض أنك تتحدث عن C ++.

وجود واجهة جميلة ونظيفة هو بالتأكيد فكرة جيدة. وجود ملف تطبيق منفصل يساعد على الحفاظ على واجهة نظيفة.

وكما يقلل من وقت تجميع، وخاصة إذا كنت تستخدم مؤشر .

إذا قمت بتطبيق وظيفة داخل الصف، لا يمكنك # تضمين الطبقة في ملفات .CPP متعددة أو سوف رابط يشكو تعريفات متعددة من وظيفة.

وهكذا، جرت العادة على أن يكون تعريف الفئة في ملف .h وتنفيذ أعضاء في ملف .cpp (عادة بنفس الاسم).

مرة أخرى ، assiming C++, وعادة ما تقيد هذه النائبة على وظائف افتراضية, على سبيل المثال

virtual int MyFunc() {}  // Does nothing in base class, override if needed

أي شيء آخر, و أندرو الطبية نقطة في ركلات بسهولة جدا و يضر تجميع مرات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top