การเติมโค้ดใน IDE

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.v25.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 จะเริ่มต้นบริการก่อนที่จะแสดงผล หากคุณนำเข้าบริการโดยตรง คุณจะต้องเริ่มต้นบริการด้วยตนเองก่อนที่จะทำการขอ