หลักการตั้งชื่อสำหรับโครงการโอเพ่นซอร์ส iOS / OSX


12

ไม่เสมอไป แต่ส่วนใหญ่คุณจะพบโครงการโอเพ่นซอร์ส iOS หรือ Mac OS X ที่มีชื่อขึ้นต้นด้วยตัวอักษรเริ่มต้นของชื่อและนามสกุลของผู้แต่ง NLMyProjectหากเป็นโครงการที่ได้รับจะได้รับการประพันธ์โดยนิคเลอบลังโครงการจะได้รับการอ่านเป็น

ตัวอย่าง:

สิ่งนั้นมาจากไหน มีคนคนหนึ่งเขียนด้วยวิธีนี้ก่อนจากนั้นคนอื่นตามมา

ฉันไม่สามารถหาอะไรเกี่ยวกับมันแม้จะอยู่ในหลักเกณฑ์ของแอปเปิ้ล เป็นสำนวนที่เขียนได้ทุกที่หรือไม่?


1
เป็นคำถามที่ดีและตัวอย่างโอเพ่นซอร์สที่ยอดเยี่ยม! ;-)
Leo Natan

คำตอบ:


16

วัตถุประสงค์ C เช่น C ไม่มีเนมสเปซ ซึ่งหมายความว่าหากใครบางคนได้กำหนดฟังก์ชันfooหรือคลาสBarแล้วมันจะต้องไม่ซ้ำกันทั่วโลกและคุณไม่สามารถกำหนดได้ ซึ่งอาจส่งผลให้เกิดอาการปวดหัวจำนวนมากเมื่อคุณมีรหัสของคุณแล้วเพิ่มห้องสมุดอื่นและทันใดนั้นสิ่งต่าง ๆ ในสถานที่แปลก ๆ

มีเป็นแนวทางที่นำเสนอโดยแอปเปิ้ลในการประชุม: การเขียนโปรแกรมด้วยวัตถุประสงค์ Cห้องสมุดของนักพัฒนา iOS:

ชื่อบางชื่อต้องไม่ซ้ำกันในแอปของคุณ

ทุกครั้งที่คุณสร้างชนิดสัญลักษณ์หรือตัวระบุใหม่คุณควรพิจารณาขอบเขตที่ชื่อนั้นจะต้องไม่ซ้ำกัน บางครั้งขอบเขตนี้อาจเป็นแอปพลิเคชันทั้งหมดรวมถึงกรอบงานที่เชื่อมโยง บางครั้งขอบเขตจะถูก จำกัด เพียงแค่คลาสที่ล้อมรอบหรือแม้แต่บล็อกของรหัส

ชื่อคลาสจะต้องไม่ซ้ำกันในแอพทั้งหมด

คลาส Objective-C ต้องตั้งชื่อไม่ซ้ำกันไม่เฉพาะในรหัสที่คุณกำลังเขียนในโครงการ แต่ยังรวมถึงกรอบหรือบันเดิลใด ๆ ที่คุณอาจรวมถึง ตัวอย่างเช่นคุณควรหลีกเลี่ยงการใช้ชื่อคลาสทั่วไปเช่น ViewController หรือ TextParser เนื่องจากอาจเป็นไปได้ว่าเฟรมเวิร์กที่คุณใส่ในแอพของคุณอาจล้มเหลวในการปฏิบัติตามอนุสัญญาและสร้างคลาสที่มีชื่อเดียวกัน

เพื่อให้ชื่อคลาสไม่ซ้ำกันการประชุมคือการใช้คำนำหน้าในทุกชั้น คุณจะสังเกตเห็นว่าชื่อคลาส Cocoa และ Cocoa Touch เริ่มต้นด้วย NS หรือ UI คำนำหน้าตัวอักษรสองตัวแบบนี้สงวนไว้โดย Apple เพื่อใช้ในคลาสเฟรมเวิร์ก เมื่อคุณเรียนรู้เพิ่มเติมเกี่ยวกับ Cocoa และ Cocoa Touch คุณจะพบกับคำนำหน้าอื่น ๆ ที่เกี่ยวข้องกับเฟรมเวิร์กเฉพาะ:

...

คลาสของคุณเองควรใช้ตัวอักษรนำหน้าสามตัว สิ่งเหล่านี้อาจเกี่ยวข้องกับการรวมชื่อ บริษัท ของคุณและชื่อแอปของคุณหรือแม้แต่ส่วนประกอบเฉพาะภายในแอปของคุณ ตัวอย่างเช่นหาก บริษัท ของคุณถูกเรียกว่า Whispering Oak และคุณกำลังพัฒนาเกมที่ชื่อว่า Zebra Surprise คุณอาจเลือก WZS หรือ WOZ เป็นคำนำหน้าชั้นของคุณ

ดังนั้นห้องสมุดพวกเขาที่คุณพูดถึงการแบ่งอนุสัญญานี้ แต่รับที่หัวใจของปัญหาการขาดการกำหนดชื่อภายในวัตถุประสงค์ C

การอ่าน
Namespacing เพิ่มเติมโดย NSHipster
วิธีที่ดีที่สุดในการแก้ไขการชนของเนมสเปซ Objective-C คืออะไร?
หนึ่งใช้ namespaces ในรหัส iOS วัตถุประสงค์อะไร


เสียงเหมือน Objective-C จริงๆต้อง namespaces ...
คริส Cirefice

1
@ChrisCirefice มันจะดีจริง ๆ แต่สิ่งที่ต้องตระหนักคือ Objective C เป็นชั้นบาง ๆ บน C. การพยายามแนะนำพื้นที่ชื่อมีโอกาสยากกว่าที่จะดูโดยไม่ทำลาย การขุดทำไม Objective-C จึงไม่มีเนมสเปซ ผมพบว่านักพัฒนาเสียงดังกราว - เพิ่ม namespaces เพื่อวัตถุประสงค์ -C จำไว้ว่า@ใช้เพราะมันไม่ได้ใช้ใน C ... พยายามที่จะเพิ่มโอเปอเรเตอร์อื่นที่ไม่ทำลายสิ่งอื่นที่ท้าทาย

1
@ChrisCirefice Namespaces ไม่แก้ปัญหาอะไรเลย คำนำหน้าการปะทะกันกลายเป็นเพียงการปะทะกันของ namespace
Miles Rout

@MichaelT Objective C ไม่ได้มีเลเยอร์บาง ๆ อยู่ด้านบนของ C ชั่วขณะหนึ่ง (Objective C 2.0) ตอนนี้ Apple ได้เปลี่ยนโฟกัสไปที่ Swift ซึ่งรวมถึงฟีเจอร์ที่ทันสมัยกว่าเช่นเนมสเปซ แต่ปัจจุบันยังขาดฟีเจอร์อื่น ๆ ของ Objective C.
Leo Natan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.