كيفية تنظيم القضبان النماذج التي هي سمينة ؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

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

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

تحرير:لقد إخترت إجابة جديدة أن اقترح استخدام ActiveConcern.أيضا ، إلى أي شخص مهتم بشأن تنظيم رمز هذه المادة ، مما يجعل ActiveRecord نماذج رقيقة, ينبغي أن تساعد إلى حد كبير.

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

المحلول

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

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

وDHH نفسه يوفر لطيفة، مقتضبة سبيل المثال جوهر هنا:

https://gist.github.com/1014971

نصائح أخرى

أنا لن أفعل هذا لعدة أسباب.

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

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

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

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

وأنا نشر جوابا على سؤالي الخاص، ولقد وجدت الطريق القضبان لفعل ذلك: http://github.com/jakehow/concerned_with

ويمكن الاطلاع على مزيد من المعلومات هنا: http://m.onkey.org/2008/ 15/9 / نشطة قياسية-النصائح والحيل

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

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

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

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

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

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