سؤال

ولدي أسلوب ثابت في قانون بلدي الذي أود بطريقة أو بأخرى للسخرية.

وأستخدمه jmock.

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

وانا ذاهب عن هذا بطريقة خاطئة؟

وردود الفعل:

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

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

المحلول

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

نصائح أخرى

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

وأنا لا أرى أي مشكلة مع حكيمة استخدام أساليب ثابتة عند تصميم حل OO خلاف ذلك.

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


    List<Person> peopleAboveAge = 
        find("select p from Person p where p.age >= ?", age);

حيث يتم استيراد طريقة find ثابت من فئة PersistenceFacade الذي يحدد أساليب ثابتة فقط، وتلخص كيفية الحصول على سبيل المثال الدورة / EntityManager السليم. هذا الحل هو وحدة اختبار ودية ومرونة. I استخدامه في تطبيقات الأعمال التي كان 500+ الكيانات المستمرة، وذلك باستخدام السبات. ساعدت واجهة ثابتة عندما هاجرنا من السبات 2 إلى 3 السبات، ونحن عندما هاجروا من أوراكل لسايبيس ومن ثم العودة إلى أوراكل، وعندما بدأنا استخدام التعليقات JPA بدلا من ملفات "hbm.xml" لرسم الخرائط ORM.

Powermock هو امتداد لEasyMock التي تسمح ساخرا من أساليب ثابتة.

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