คำถามติดแท็ก code-completion

12
วิธีที่ดีที่สุดในการกำหนดวิธีการส่วนตัวสำหรับคลาสใน Objective-C
ฉันเพิ่งเริ่มเขียนโปรแกรม Objective-C และมีพื้นหลังใน Java สงสัยว่าคนเขียนโปรแกรม Objective-C จัดการกับวิธีส่วนตัว ฉันเข้าใจว่าอาจมีอนุสัญญาและนิสัยหลายอย่างและคิดถึงคำถามนี้ในฐานะผู้รวบรวมเทคนิคที่ดีที่สุดที่ผู้คนใช้ในการจัดการกับวิธีการส่วนตัวใน Objective-C โปรดรวมอาร์กิวเมนต์สำหรับวิธีการของคุณเมื่อโพสต์ ทำไมถึงดี ข้อเสียใดที่มี (ที่คุณรู้) และวิธีจัดการกับพวกเขา สำหรับการค้นพบของฉันจนถึง เป็นไปได้ที่จะใช้หมวดหมู่ [เช่น MyClass (ส่วนตัว)] ที่กำหนดไว้ในไฟล์ MyClass.m เพื่อจัดกลุ่มวิธีส่วนตัว วิธีนี้มี 2 ประเด็น: Xcode (และคอมไพเลอร์?) ไม่ได้ตรวจสอบว่าคุณกำหนดวิธีการทั้งหมดในหมวดหมู่ส่วนตัวในบล็อก @implementation ที่สอดคล้องกัน คุณต้องใส่ @interface ประกาศหมวดหมู่ส่วนตัวของคุณในจุดเริ่มต้นของไฟล์ MyClass.m มิฉะนั้น Xcode บ่นกับข้อความเช่น "ตัวเองอาจไม่ตอบสนองต่อข้อความ" privateFoo " ปัญหาแรกสามารถแก้ไขได้ด้วยหมวดหมู่ที่ว่าง [เช่น MyClass ()] คนที่สองรบกวนฉันมาก ฉันต้องการที่จะเห็นวิธีการส่วนตัวนำไปใช้ (และกำหนด) ใกล้ถึงจุดสิ้นสุดของไฟล์; ฉันไม่ทราบว่าเป็นไปได้

5
ฉันจะบอก PyCharm ได้อย่างไรว่าพารามิเตอร์ประเภทใดที่คาดว่าจะเป็น
เมื่อพูดถึง Constructor และการมอบหมายและการเรียกเมธอด PyCharm IDE ค่อนข้างดีในการวิเคราะห์ซอร์สโค้ดของฉันและการหาว่าตัวแปรแต่ละชนิดควรเป็นอะไร ฉันชอบเมื่อมันถูกต้องเพราะมันให้ข้อมูลโค้ดที่สมบูรณ์และพารามิเตอร์ที่ดีและให้คำเตือนแก่ฉันถ้าฉันพยายามเข้าถึงแอตทริบิวต์ที่ไม่มีอยู่ แต่เมื่อพูดถึงพารามิเตอร์มันไม่รู้อะไรเลย ดร็อปดาวน์การทำให้โค้ดเสร็จสมบูรณ์ไม่สามารถแสดงอะไรได้เนื่องจากพวกเขาไม่รู้ว่าจะใช้พารามิเตอร์ประเภทใด การวิเคราะห์รหัสไม่สามารถมองหาคำเตือนได้ class Person: def __init__(self, name, age): self.name = name self.age = age peasant = Person("Dennis", 37) # PyCharm knows that the "peasant" variable is of type Person peasant.dig_filth() # shows warning -- Person doesn't have a dig_filth method class King: …

2
เติมโค้ดได้เร็วขึ้นด้วยเสียงดังกริ๊ก
ฉันกำลังตรวจสอบการเร่งการเติมโค้ดที่เป็นไปได้ในขณะที่ใช้กลไกการเติมโค้ดของ clang ขั้นตอนที่อธิบายด้านล่างคือสิ่งที่ฉันพบในrtagsโดย Anders Bakken หน่วยการแปลถูกแยกวิเคราะห์โดยไฟล์การมอนิเตอร์ daemon สำหรับการเปลี่ยนแปลง สิ่งนี้ทำได้โดยเรียกclang_parseTranslationUnitและฟังก์ชันที่เกี่ยวข้อง ( reparse*, dispose*) clang_codeCompleteAtเมื่อผู้ใช้ร้องขอเสร็จสิ้นในเส้นที่กำหนดและคอลัมน์ในแฟ้มแหล่งที่มาที่ภูตผ่านการแปลหน่วยที่เก็บไว้สำหรับรุ่นที่บันทึกไว้ล่าสุดของแฟ้มแหล่งที่มาและแฟ้มแหล่งที่มาปัจจุบัน ( เอกสาร Clang CodeComplete ) ธงที่ส่งผ่านไปclang_parseTranslationUnit(จากCompletionThread :: กระบวนการสาย 271 ) CXTranslationUnit_PrecompiledPreamble|CXTranslationUnit_CacheCompletionResults|CXTranslationUnit_SkipFunctionBodesเป็น ธงที่ส่งผ่านไปclang_codeCompleteAt(จากCompletionThread :: กระบวนการสาย 305 ) CXCodeComplete_IncludeMacros|CXCodeComplete_IncludeCodePatternsเป็น เรียกร้องให้clang_codeCompleteAtช้ามาก - มันจะใช้เวลาประมาณ 3-5 clang_codeCompleteAtวินาทีเพื่อให้ได้เสร็จสิ้นแม้ในกรณีที่สถานที่ตั้งเสร็จสิ้นเป็นรหัสการเข้าถึงสมาชิกที่ถูกต้องเป็นส่วนหนึ่งของกรณีการใช้งานตั้งใจที่กล่าวถึงในเอกสารของ ดูเหมือนว่าวิธีนี้จะช้าเกินไปตามมาตรฐานการเติมรหัส IDE มีวิธีเร่งความเร็วนี้หรือไม่?

3
การเติมโค้ดทำงานอย่างไร?
บรรณาธิการและ IDE จำนวนมากมีการเติมโค้ด บางคนมีความ "ฉลาด" มากคนอื่น ๆ ไม่ได้จริงๆ ฉันสนใจประเภทที่ฉลาดกว่า ตัวอย่างเช่นฉันเคยเห็น IDE ที่เสนอฟังก์ชันถ้าเป็น a) พร้อมใช้งานในขอบเขตปัจจุบัน b) ค่าที่ส่งคืนถูกต้อง (ตัวอย่างเช่นหลังจาก "5 + foo [tab]" จะมีเฉพาะฟังก์ชันที่ส่งคืนสิ่งที่สามารถเพิ่มลงในชื่อจำนวนเต็มหรือตัวแปรของประเภทที่ถูกต้องได้) ฉันยังเห็นว่าพวกเขาวางตัวเลือกที่ใช้บ่อยกว่าหรือยาวที่สุดไว้ข้างหน้า ของรายการ ฉันรู้ว่าคุณต้องแยกวิเคราะห์รหัส แต่โดยปกติแล้วในขณะที่แก้ไขโค้ดปัจจุบันไม่ถูกต้องจะมีข้อผิดพลาดทางไวยากรณ์อยู่ คุณจะแยกวิเคราะห์บางสิ่งได้อย่างไรเมื่อมันไม่สมบูรณ์และมีข้อผิดพลาด นอกจากนี้ยังมีข้อ จำกัด ด้านเวลา การทำให้เสร็จสิ้นจะไร้ประโยชน์หากใช้เวลาไม่กี่วินาทีในการสร้างรายการ บางครั้งอัลกอริทึมการทำให้สมบูรณ์จะเกี่ยวข้องกับคลาสหลายพันคลาส อัลกอริทึมและโครงสร้างข้อมูลที่ดีสำหรับสิ่งนี้คืออะไร?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.