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

توفّر بيئات التطوير المتكاملة (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.v22.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 الخدمات قبل عرضها. في حال استيراد الخدمات مباشرةً، عليك إعدادها يدويًا قبل إرسال الطلبات.