قبل أن يكون الإكمال التلقائي الذي يدعمه خادم اللغة موجودًا في كل مكان، لم يكن يهم إذا تمت كتابة التعليمات البرمجية بطريقة تجعل الإكمال التلقائي سهلاً. لم تتمكن برامج تحرير النصوص الشائعة مثل Sublime من فهم التعليمات البرمجية بشكل كافٍ لتقديم اقتراحات ذات معنى. إما أن المبرمجين يحفظون أوامر تبعياتهم أو يقومون بالرجوع إلى الوثائق.
في عام 2024، أصبح الإكمال التلقائي في كل مكان، ولكن حزمنا لم تجعل مهمته سهلة بالضرورة. خذ هذا المثال من وثائق Factory Boy:
import factory from datetime import datetime from .models import User class UserFactory(factory.Factory): class Meta: model = User arrival = factory.Faker( 'date_between_dates', date_start=datetime.date(2020, 1, 1), date_end=datetime.date(2020, 5, 31), )
تستدعي سمة الوصول طريقة date_between_dates() الخاصة بـ Faker. لسوء الحظ، لا يخبرك Factory.Faker() عن طرق Faker المتاحة، ولن يخبرك عن المعلمات التي تقبلها طريقة Faker بمجرد تحديد واحدة. يخفف هذا الرمز من الفوائد التي توفرها خوادم اللغة.
يمكنك الحصول على الإكمال التلقائي أثناء استخدام Faker مع Factory_boy عن طريق تغليف مكالمة Faker في المصنع.LazyFunction():
import factory from datetime import datetime from .models import User fake = Faker() class UserFactory(factory.Factory): class Meta: model = User arrival = factory.LazyFunction(lambda: fake.date_between_dates( date_start=datetime.date(2020, 1, 1), date_end=datetime.date(2020, 5, 31), ))
يتم تقييم الوظائف التي تم تمريرها إلى المصنع.LazyFunction() عندما يقوم المصنع بإنشاء مثيل. نقوم بتغليف مكالمتنا المزيفة في لامدا حتى نتمكن من تقديم الحجج لها. ويمكن لخادم اللغة الخاص بك أن يوضح لك المعلمات التي يقبلها fake.date_between_dates().
يكون الإعداد أقل عندما لا تحتاج الدالة المزيفة إلى أي وسيطات. إليك كيفية استخدامfactor.LazyFunction() مع طريقتي Faker's first_name() وlast_name():
import factory from datetime import datetime from .models import User fake = Faker() class UserFactory(factory.Factory): class Meta: model = User first_name = factory.LazyFunction(fake.first_name) last_name = factory.LazyFunction(fake.last_name)
الكود الناتج أطول قليلاً مما سيكون عليه لو استخدمنا Factory.Faker()، لكن المساعدة من خادم اللغة تستحق العناء بالنسبة لي. وبدون ذلك، قد أحتاج إلى التحقق باستمرار من الوثائق.
إذا كانت الكتابة أكثر من اللازم، فيمكنك دائمًا تسميتها بشيء أقصر:
from factory import Factory, LazyFunction as LazyFn from datetime import datetime from .models import User fake = Faker() class UserFactory(Factory): class Meta: model = User first_name = LazyFn(fake.first_name) last_name = LazyFn(fake.last_name)
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3