تکمیل کد IDE

IDEهایی مانند VS Code و PyCharm قابلیت تکمیل کد داخلی برای زبان پایتون ارائه می‌دهند.

کتابخانه 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 قبل از بازگرداندن سرویس‌ها، آنها را مقداردهی اولیه می‌کند. اگر سرویس‌ها را مستقیماً وارد می‌کنید، قبل از ارسال درخواست‌ها، باید آنها را به صورت دستی مقداردهی اولیه کنید.