การตั้งชื่อ Instance
และ Parameter
ใน Objective-C: วิธีปฏิบัติที่ดีที่สุด
เมื่อเหล่านักพัฒนาดำดิ่งสู่โลกของ Objective-C หนึ่งในคำถามที่มักเกิดขึ้นคือ: คุณตั้งชื่อ instance และ parameter ของคุณอย่างไร? นี่ไม่ใช่แค่ตัวเลือกในด้านสไตล์; การตั้งชื่อที่ถูกต้องสามารถเพิ่มการอ่านได้ง่ายและการบำรุงรักษาโค้ดได้อย่างมาก โดยเฉพาะสำหรับผู้ที่อาจอ่านหรือทำงานกับโค้ดของคุณในอนาคต
ในบล็อกโพสต์นี้ เราจะสำรวจแนวทางการตั้งชื่อที่มีประสิทธิภาพสำหรับตัวแปร instance และ parameter ของฟังก์ชัน แบ่งปันวิธีปฏิบัติที่ดีที่สุด และให้ตัวอย่างเพื่อช่วยในการอธิบายเหล่านี้
ความสำคัญของแนวทางการตั้งชื่อ
แนวทางการตั้งชื่อที่ดี:
- เพิ่มความอ่านง่าย: ชื่อที่ชัดเจนทำให้โค้ดอธิบายตัวเองได้
- ป้องกันการซ้อนทับ: การลดความขัดแย้งของชื่อของตัวแปรภายในฟังก์ชันช่วยลดความสับสน
- อำนวยความสะดวกในการทำงานร่วมกัน: นักพัฒนาคนอื่นสามารถเข้าใจโค้ดของคุณได้ง่าย
สำหรับผู้ที่ใหม่กับ Objective-C (มาจากพื้นฐาน C/C++ มาเป็นเวลานาน) คุณอาจพบว่าแนวทางการตั้งชื่ออาจแตกต่างออกไป เรามาอธิบายกัน
การตั้งชื่อตัวแปร Instance
วิธีการทั่วไป
โปรเจกต์ Cocoa ส่วนใหญ่ใช้แนวทางเฉพาะสำหรับการตั้งชื่อตัวแปร instance:
- ใช้การเติมขีดล่าง: เป็นที่นิยมที่จะเติมขีดล่าง (_) ข้างหน้าชื่อตัวแปร instance เพื่อแยกแยะจากตัวแปรท้องถิ่นและพารามิเตอร์
- ไม่มีการเติมสำหรับ IBOutlets: สำหรับตัวแปร instance ของ IBOutlet มาตรฐานคือไม่ใช้การเติมใดๆ เพื่อหลีกเลี่ยงปัญหาเมื่อดำเนินการเกี่ยวกับการเชื่อมต่อ Interface Builder
เหตุผลที่ไม่มีการเติมสำหรับ IBOutlets
เมื่อไฟล์ nib โหลด ถ้าคุณมีวิธีการ setter สำหรับ outlet ที่เชื่อมต่ออยู่ วิธีการ setter นี้จะถูกเรียกใช้งาน หากคุณเติมขีดล่างให้กับตัวแปร IBOutlet (เช่น _myField
) ตัวแปรนั้นจะไม่ถูกตั้งค่าอย่างถูกต้อง เนื่องจากวิธีการ setter ที่คาดหวังจะต้องปฏิบัติตามแนวทางการตั้งชื่อที่ไม่เป็นมาตรฐาน (เช่น set_myField:
) ซึ่งอาจนำไปสู่ความสับสน
การใช้ Properties
ทำความเข้าใจเกี่ยวกับ Properties กับตัวแปร Instance
เป็นสิ่งสำคัญที่จะแยกแยะวิธีการเข้าถึง properties กับตัวแปร instance:
- การเข้าถึง Properties ใช้การส่งข้อความ: เมื่อคุณเข้าถึง property โดยใช้
self.myProp
คุณกำลังส่งข้อความ ไม่ได้เข้าถึงตัวแปร instance โดยตรง - การเข้าถึงโดยตรงต้องใช้ไวยากรณ์ที่แตกต่าง: หากคุณจำเป็นต้องเข้าถึงตัวแปร instance โดยตรงด้วยการอ้างอิง
self
ให้ถือว่าself
เป็นตัวชี้ (เช่นself->_myProp
)
เมื่อใดที่ควรใช้ตัวแปร Instance
แนวทางที่ดีคือการจัดการตัวแปร instance โดยตรงเฉพาะใน:
- ตัวสร้าง: เมื่อทำการตั้งค่าอ็อบเจกต์
- วิธีการ Dealloc: เพื่อทำความสะอาดหน่วยความจำอย่างถูกต้อง
- Getters และ setters: ในระหว่างการใช้งาน property
หลีกเลี่ยงการใช้ Hungarian Notation
Hungarian notation (เช่น การเติมชื่อของตัวแปรเพื่อบ่งบอกประเภท) มักถูกมองว่าไม่ดีในการเขียนโปรแกรม Cocoa มันอาจทำให้โค้ดของคุณดูล้าสมัยหรือทำให้เกิดข้อสงสัยในหมู่นักพัฒนาคนอื่น แทนที่จะทำเช่นนั้น ให้เลือกใช้ความชัดเจนและความเรียบง่ายในชื่อของตัวแปรของคุณ
ข้อคิดสุดท้าย
โดยสรุป เมื่อคุณตั้งชื่อ instance และ parameter ของคุณใน Objective-C:
- ปฏิบัติตามแนวทางที่ตั้งไว้: ใช้การเติมขีดล่างสำหรับตัวแปร instance แต่ไม่มีสำหรับ IBOutlets
- ใช้ properties ด้วยความระมัดระวัง: ทำความเข้าใจความแตกต่างระหว่างการเข้าถึง properties และตัวแปร instance
- หลีกเลี่ยงการจดหมายที่สับสน: หลีกเลี่ยงการใช้ Hungarian หรือการเติมที่ไม่เป็นเหตุเป็นผล
โดยการปรับกลยุทธ์การตั้งชื่อของคุณให้สอดคล้องกับแนวทางเหล่านี้ คุณจะไม่เพียงแค่ปรับปรุงความอ่านง่ายของโค้ดของคุณเท่านั้น แต่ยังสร้างสภาพแวดล้อมที่เอื้อต่อการทำงานร่วมกันสำหรับนักพัฒนาคนอื่นที่อาจทำงานในโปรเจกต์ของคุณในอนาคต
ตัวอย่างการใช้งาน
นี่คือตัวอย่างวิธีการที่คลาสใน Objective-C ของคุณอาจมีลักษณะเมื่อใช้แนวทางนี้:
// EmployeeWindowController.h
#import <AppKit/NSWindowController.h>
@interface EmployeeWindowController : NSWindowController {
@private
// อ็อบเจ็กต์โมเดลที่หน้าต่างนี้นำเสนอ
Employee *_employee;
// outlet ที่เชื่อมต่อกับมุมมองในหน้าต่าง
IBOutlet NSTextField *nameField;
IBOutlet NSTextField *titleField;
}
- (id)initWithEmployee:(Employee *)employee;
@property(readwrite, retain) Employee *employee;
@end
แนวทางนี้ช่วยรับประกันความชัดเจนและป้องกันปัญหาที่อาจเกิดขึ้นในโค้ดของคุณ
โดยการปฏิบัติตามแนวทางเหล่านี้ คุณกำลังมุ่งสู่การเป็นผู้เชี่ยวชาญในการตั้งชื่อใน Objective-C ที่ช่วยเพิ่มคุณภาพของโค้ดของคุณและศักยภาพในการทำงานร่วมกัน