ฉันเคยเห็นรหัสจำนวนมากที่มีการประกาศเช่นClass clazz
นี้มาจากที่ใด นี่เป็นการประชุมบางประเภทหรือเปล่า? ฉันคิดว่า 'clazz' ไม่ใช่คำภาษาอังกฤษไม่มีความหมายเลยโปรแกรมเมอร์หลายคนสามารถตั้งชื่อผิดโดยบังเอิญได้อย่างไร
ฉันเคยเห็นรหัสจำนวนมากที่มีการประกาศเช่นClass clazz
นี้มาจากที่ใด นี่เป็นการประชุมบางประเภทหรือเปล่า? ฉันคิดว่า 'clazz' ไม่ใช่คำภาษาอังกฤษไม่มีความหมายเลยโปรแกรมเมอร์หลายคนสามารถตั้งชื่อผิดโดยบังเอิญได้อย่างไร
คำตอบ:
clazz
ถูกใช้ใน Java แทนคำว่า "class" ที่สงวนไว้ตั้งแต่ JDK 1.0 "class" คือสิ่งที่คุณต้องการ แต่การย่อหรือแทรกขยะ ("a", "the", "_", ฯลฯ ) จะช่วยลดความคมชัด clazz
แค่พูดว่าคลาส "ผู้พูดภาษาอังกฤษ" ระหว่างประเทศ (ผู้อ่านทั้งภาษาอังกฤษแบบอังกฤษและแบบอเมริกัน) ใช้ในการเปลี่ยน 's' และ 'z'
ตั้งแต่ Java ได้เปิดเผยแหล่งที่มาและวัฒนธรรมที่เหมาะสมตั้งแต่เริ่มต้นรหัส Java และแบบฝึกหัดที่คุ้มค่าจึงเลือกใช้วิธีการเดียวกัน นั่นเป็นหนึ่งในสิ่งที่ยอดเยี่ยมเกี่ยวกับระบบนิเวศของ Java ซึ่งฉันคิดว่าเป็นส่วนสำคัญของความสำเร็จ
Foo
กำหนดไว้ที่ระดับขอบเขตและfoo
ที่ขอบเขตท้องถิ่นตัวแปรควรจะเป็นกฎหมาย this.Foo
แต่การอ้างอิงถึงตัวแปรชั้นขอบเขตภายในขอบเขตของท้องถิ่นควรจะต้องมี กฎดังกล่าวจะ ...
someThing
ในบางสถานที่sOmEtHiNg
ในคนอื่น ๆ
fnord
และเขตข้อมูลที่เรียกว่าfnord
ไม่มีปัญหาใด ๆ ตัวพิมพ์ใหญ่หรือคำที่ไร้สาระ ฉันคิดว่ามันจะเพียงพอเป็นตัวอย่างเคาน์เตอร์
class
เพราะพวกเขาไม่สามารถใช้คำว่าพวกเขาต้องการที่จะใช้ซึ่งเป็น มันถูกสงวนไว้
เป็นเพราะ 'คลาส' เป็นคำหลักที่สงวนไว้ดังนั้นจึงClass class
ไม่ได้รับอนุญาต ดังนั้นคุณจะเห็นหรือClass clazz
Class cls
Class
เนื่องจากมีคลาสจำนวนมากในโปรเจ็กต์ใดก็ตามที่เรียกคลาสคลาสดูเหมือนไม่มีประโยชน์ ฉันยังไม่สามารถคิดเหตุผลที่จะเรียกตัวแปรที่class
...
ClassInformation
หรือClassMetadata
หรือสิ่งที่คล้ายกัน ทุกชั้นเรียนเป็นชั้นเรียน แต่คุณไม่ได้ตั้งชื่อพวกเขาทั้งหมดClass
คุณตั้งชื่อตามหน้าที่หลักของพวกเขา
มันลงมาที่ตัวแปลที่แท้จริงและความสามารถในการแยกความแตกต่างของโทเค็นในบริบทของมัน อย่างไรก็ตามในกรณีพิเศษนี้คอมไพเลอร์ไม่สามารถแยกแยะว่าโทเค็นclass
หมายถึงอะไรในบริบทที่แตกต่างกัน มันเป็นกฎที่ยากและรวดเร็วclass
โดยไม่คำนึงถึงบริบทที่ใช้ในการแสดงการประกาศของชั้นเรียนและเป็นเช่นนี้เป็นคำที่สงวนไว้ นั่นเป็นเรื่องง่ายและเป็นระดับต่ำตามที่ได้รับ
หากคุณรู้สึกว่าถูกบังคับคุณสามารถเขียน Java คอมไพเลอร์ของคุณเองเพื่อรวมกฎบริบทที่จะอนุญาตให้คุณใช้class
เป็นชื่อตัวแปร แม้ว่าฉันคิดว่ามันจะเป็นการใช้เวลาของคุณให้ดีขึ้นเพื่อใช้clazz
หรือklass
- อาจเป็นผลดีต่อสุขภาพของคุณเช่นกัน
สิ่งนี้มาจากไหน
ฉันเห็นมันครั้งแรกที่ puzzlers ของ Josh Bloch แต่ฉันค่อนข้างมั่นใจว่ามันถูกใช้ก่อนหน้านี้มากโดยนักพัฒนาอื่น ๆ Josh Bloch สร้างชื่อเสียงให้มากขึ้น
Java ไม่มีคุณสมบัติที่ช่วยให้คุณใช้คำหลักเป็นตัวระบุซึ่งแตกต่างจาก C # กับ@
คำนำหน้า (เช่น@class
เป็นตัวระบุที่ถูกต้อง)
class
และ$class
เป็นตัวระบุที่ถูกต้อง (แต่แตกต่างกัน) ใน JVM ไม่มีตัวระบุที่คุณสามารถเขียนในไฟล์ต้นฉบับ Java ที่แปลเป็น"class"
ใน VM
มันเป็นเพียงคำภาษาอังกฤษที่ถูกแทนที่ (Equavalent) โดย Keyword Class Keyword เพื่อให้ผู้คนเข้าใจว่ามันเป็น Class และเกือบจะเป็นการเพิ่มความสามารถในการอ่านของประมวล
ไม่มีอะไรใหญ่ตรรกะเกี่ยวข้องในเรื่องนี้
การประกาศClass clazz
เป็นที่นิยมในโลก Java แต่อาจไม่สะดวกสำหรับผู้มาใหม่และผู้ตรวจการสะกดคำ ฉันได้ยินบางคนพูดว่าควรหลีกเลี่ยงตามหลักการของความประหลาดใจน้อยที่สุดที่สุด
มันเป็นไปได้ที่จะบอกว่าClass
วัตถุที่แสดงถึงประเภทของClass type
ผมเองชอบที่จะประกาศตัวแปรเช่น
เราใช้ clazz เพราะ class เป็นส่วนหัวของประเภท ตัวอย่างเช่นคุณใช้คลาสที่นี่:
public class HelloWorld {
และที่นี่:
Object.class.getName();
น่าเสียดายที่เราต้องใช้ชื่ออื่นเช่น clazz
พูดง่าย ๆclass
มีคลาสที่clazz
ไม่มี