إكمال الرمز في بيئة التطوير المتكاملة

توفّر بيئات التطوير المتكاملة (IDE) مثل VS Code و PyCharm ميزة إكمال الرموز البرمجية المضمّنة للغة Python.

تنشئ مكتبة google-ads-python فئات رسائل protobuf ديناميكيًا في وقت التشغيل باستخدام طُرق getter في الفئة GoogleAdsClient، ما قد يعيق ميزات إكمال الرمز البرمجي في بيئة التطوير المتكاملة (IDE) التي تعتمد على التحليل الثابت للرمز المصدر.

يمكنك تحسين التوافق مع أدوات إكمال الرمز البرمجي التي تعتمد على التحليل الثابت من خلال استيراد فئات رسائل protobuf مباشرةً، بدلاً من استخدام طُرق getter.

  • استخدام فئات رسائل protobuf المستوردة ديناميكيًا ولا تتوافق هذه الطريقة عادةً مع أدوات إكمال الرموز البرمجية.

    from google.ads.googleads.client import GoogleAdsClient
    
    client = GoogleAdsClient.load_from_storage()
    
    # The Campaign class is imported dynamically, preventing the IDE from
    # reading the class definition.
    campaign = client.get_type("Campaign")
    
  • استخدام فئات رسائل protobuf المستوردة مباشرةً يتيح هذا النهج عمل أدوات إكمال الرموز البرمجية.

    from google.ads.googleads.v23.resources import Campaign
    
    # The Campaign class is imported directly, enabling the IDE to read the
    # class definition and make code completion suggestions.
    campaign = Campaign()
    

على الرغم من أنّ استيراد الفئات التي تم إنشاؤها مباشرةً يساعد في إكمال الرمز، إلا أنّه يتضمّن أيضًا بعض العيوب:

  1. ليس من الواضح دائمًا الوحدة التي يقع فيها صف معيّن، لذا قد يكون من الصعب العثور على مسار الاستيراد الصحيح.
  2. يمكن أن يتغيّر هيكل الدليل الخاص بالفئات التي تم إنشاؤها مع الإصدارات الجديدة من مكتبة العميل. إذا استوردت الفئات مباشرةً، قد يتعطّل الرمز عند الترقية، بينما لن يتأثّر الرمز الذي يستخدم طرق getter بهذه الأنواع من التغييرات.
  3. تُهيّئ طريقة get_service الخدمات قبل عرضها. إذا استوردت الخدمات مباشرةً، عليك إعدادها يدويًا قبل إرسال الطلبات.