ลำดับที่เหมาะสมของตัวปรับแต่ง Java คืออะไร (นามธรรมขั้นสุดท้ายสาธารณะแบบคงที่ ฯลฯ )


115

ลำดับที่เหมาะสมของตัวปรับแต่ง Java คืออะไร?

  • บทคัดย่อ
  • สุดท้าย
  • พื้นเมือง
  • เอกชน
  • มีการป้องกัน
  • สาธารณะ
  • คงที่
  • เข้มงวด fp
  • ซิงโครไนซ์
  • ชั่วคราว
  • ระเหย

อัปเดต

ฉันได้เปลี่ยนถ้อยคำจากแนะนำเป็นสมเหตุสมผลเพื่อให้การสนทนาสงบลงไม่ว่าจะเป็นคำสั่งที่แนะนำหรือไม่ก็ตาม


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

9
ฉันสงสัยว่าทำไมจึงควรเป็นคำถามที่ "ไม่สร้างสรรค์" (คำขอปิด) คุณสามารถค้นหาคำแนะนำในข้อกำหนด (ดูคำตอบของฉัน) และการปฏิบัติตามคำแนะนำนี้จะช่วยเพิ่มความสามารถในการอ่านโค้ด ตัววิเคราะห์รหัสคงที่ (เช่น SONAR) จะบ่นหากคุณใช้คำสั่งอื่น
FrVaBe

ฉันได้ดูข้อตกลงOracle / Sun Java Codeอีกครั้ง ไม่มีการพูดถึงเรื่องนี้ด้วยซ้ำในที่เดียวที่คุณควรดูและที่เดียวที่คุณคาดหวังให้มันปรากฏ
Marquis of Lorne

@EJB ข้อกำหนดของรหัสมาจากปี 1999 และจำเป็นอย่างยิ่งที่จะต้องได้รับการอัปเดต ฉันหวังว่าพวกเขาจะรวมหัวข้อนี้หากพวกเขาเคยสัมผัสการประชุมเหล่านี้อีกครั้งเพราะที่นี่เป็นสถานที่ที่ดีจริงๆ!
FrVaBe

1
Eclipse สามารถจัดเรียงโมดิฟายเออร์โดยอัตโนมัติได้หรือไม่? หรืออย่างน้อยก็ให้คำเตือนหากไม่มีการเรียงลำดับ?
Roland

คำตอบ:


126

จารีตประเพณีเพื่อการใช้งานของการปรับเปลี่ยนเป็นที่กล่าวถึงในรายละเอียดภาษา Java (และไม่ชวาเสมือนจำเพาะ Machine) เช่นการปรับเปลี่ยนระดับคุณจะพบความหมายดังต่อไปนี้ (สารสกัด):

ClassModifiers:
    ClassModifier
    ClassModifiers ClassModifier

ClassModifier: one of
    Annotation public protected private
    abstract static final strictfp

[.... ]

หากตัวปรับแต่งคลาส (แตกต่างกัน) สองตัวขึ้นไปปรากฏในการประกาศคลาสก็เป็นเรื่องปกติแม้ว่าจะไม่จำเป็น แต่ก็จะปรากฏตามลำดับที่สอดคล้องกับที่แสดงไว้ด้านบนในการผลิตสำหรับ ClassModifier (ข้อความเล็ก ๆ ท้ายย่อหน้า!)

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

อัปเดต : ฉันแทนที่ "ระบุ / แนะนำ" ด้วย "ธรรมเนียม" เพื่อให้เป็นคำตอบที่ยอมรับได้ เวลานี้ในบัญชีถ้าคุณอ่านความคิดเห็น ;-) (ขอบคุณ @EJP ให้ชัดเจนนี้) - แต่ผมจะแนะนำให้ใช้จารีตประเพณีการสั่งซื้อ

Google ยังแนะนำให้ใช้คำสั่งตามปกติที่ระบุไว้ในข้อมูลจำเพาะของ Java

public / protected / private 
abstract 
static 
final 
transient 
volatile 
synchronized 
native 
strictfp

อัปเดต : มีการริเริ่ม" Java Style Guidelines " ใหม่สำหรับโครงการในชุมชน OpenJDK นอกจากนี้ยังมีคำแนะนำสำหรับคำสั่งโมดิฟายเออร์และรวมถึงโมดิฟายเออร์เริ่มต้นใหม่ของ Java 8

public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp

1
คำถามคือ "ลำดับที่แนะนำของตัวปรับแต่ง Java คืออะไร" และคำถามนี้มีคำตอบในข้อกำหนดภาษา (และเนื่องจากไม่จำเป็นต้องมีคำสั่งฉันจะบอกว่าแนะนำในข้อกำหนด) ข้อกำหนด JVM เกี่ยวกับรูปแบบไฟล์คลาสไม่ใช่ซอร์สโค้ด Java - อันที่จริงคำสั่งซื้อไม่สำคัญ แต่ถ้าคุณทำตามคำแนะนำรหัสของคุณจะอ่านได้ง่ายขึ้นสำหรับคนอื่น ๆ ดังนั้นฉันคิดว่านี่เป็นคำถามที่สมเหตุสมผลที่สามารถให้คำตอบที่แม่นยำได้ อย่างไรก็ตาม - เครื่องวิเคราะห์รหัสคงที่ (เช่น SONAR) จะบ่นเกี่ยวกับลำดับที่ไม่ถูกต้อง
FrVaBe

3
ประโยคหากตัวปรับแต่งคลาส (แตกต่างกัน) สองตัวขึ้นไปปรากฏในการประกาศคลาสก็เป็นเรื่องปกติแม้ว่าจะไม่จำเป็น แต่ก็จะปรากฏตามลำดับที่สอดคล้องกับที่แสดงไว้ด้านบนในการผลิตสำหรับ ClassModifier เป็นส่วนหนึ่งของข้อมูลจำเพาะ!
FrVaBe

1
ในกรณีนี้ฉันอยากจะตะโกน แต่ฉันก็สงบลงแล้ว - ขอโทษด้วยนะ ;-) - ฉันไม่ใช่คนพื้นเมือง - ดังนั้นคุณอาจตีความภาษาได้ถูกต้อง สิ่งที่ฉันอยากจะบอกพร้อมคำตอบของฉันคือมีสถานที่ที่เป็นทางการมากที่จัดการลำดับของตัวปรับแต่งในซอร์สโค้ด Java - และฉันโชคดีที่พบสิ่งนี้เมื่อฉันถามคำถามเดียวกันกับตัวเอง IMHO ไม่มีที่ใดที่จะหาคำตอบได้ดีไปกว่าข้อกำหนดภาษา Java
FrVaBe


1
@EJP คุณมีความคิดเห็นที่รุนแรง (~ ไม่มีคำสั่งซื้อที่แนะนำ) ในหัวข้อนั้น คุณจะกรุณาให้คำตอบนี้หรือไม่? ฉันอยากรู้เกี่ยวกับการโหวต
FrVaBe

28

มีความสมเหตุสมผลที่จะใช้คำสั่งตามข้อกำหนดของJava Virtual Machine ตารางที่ 4.4

  • สาธารณะ
  • มีการป้องกัน
  • เอกชน
  • บทคัดย่อ
  • ค่าเริ่มต้น
  • คงที่
  • สุดท้าย
  • ชั่วคราว
  • ระเหย
  • ซิงโครไนซ์
  • พื้นเมือง
  • เข้มงวด fp

8
+1 ที่คุณเห็นบ่อย: "นามธรรมสาธารณะ" "ขั้นสุดท้ายแบบคงที่ส่วนตัว" ฯลฯ IDE บางรายการ (เช่น NetBeans) มีทางลัดบางอย่างเช่น "psf" หรือ "Psf"
Puce

1
คุณสามารถค้นหาคำสั่งที่แนะนำได้ในข้อกำหนดภาษา Java (ไม่ใช่ Java Virtual Machine Specification!) ดูคำตอบของฉัน
FrVaBe

1
@FrVaBe คุณไม่สามารถหาสิ่งนั้นได้ อย่าสับสนกับไวยากรณ์ภาษากับคำแนะนำสไตล์
Marquis of Lorne

@Puce: IDE บางตัว (เช่น IntelliJ IDEA) ยังสามารถเรียงลำดับตัวดัดแปลงได้อย่างถูกต้อง
Mot

5

ขึ้นอยู่กับค่า int ของพวกเขา

ตัวปรับแต่ง (Java Platform SE 8)

  • 1: สาธารณะ
  • 2: ส่วนตัว
  • 4: ป้องกัน
  • 8: คงที่
  • 16: สุดท้าย
  • 32: ซิงโครไนซ์
  • 64: ระเหย
  • 128: ชั่วคราว
  • 256: เนทีฟ
  • 512: อินเทอร์เฟซ
  • 1024: นามธรรม
  • 2048: เข้มงวด fp

1
คำตอบนี้ไม่รวมคำหลัก "default"
Sero

1
ค่า int ของพวกเขาเกี่ยวข้องกับอะไร?
Marquis of Lorne

0

ฉันใช้กฎสองข้อในการจำลำดับของตัวปรับแต่ง แต่ไม่รวมเข้มงวด fp เพราะฉันไม่เคยใช้ FYI.

  1. เนทีฟที่ซิงโครไนซ์เป็นบุคคลที่มีความสำคัญน้อยที่สุด

  2. PPP AS FTV: PPP {noise sound} AS {watching} FTV {France TV}

:)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.