Java SE 8 มาพร้อมกับกลไกใหม่สำหรับวันที่แนะนำLocalDate
, LocalTime
และLocalDateTime
ชั้นเรียนเพื่อเป็นตัวแทนของจังหวะเวลา เพื่อจัดการกับจังหวะดังกล่าวเป็นชุดของวิธีการที่จะได้รับ: LocalDate.plusDays(...)
, LocalDate.minusDays(...)
และอื่น ๆ
ฉันคิดเสมอว่าวิธีปฏิบัติที่ดีคือการตั้งชื่อวิธีการหลังจากคำกริยาอธิบายถึงจุดประสงค์ของพวกเขาเช่นเดียวกับวิธีการที่เป็นจริงการดำเนินการที่จะดำเนินการสิ่งที่จะดำเนินการ เพียงแค่พูดถึงถ้าคุณพิจารณาการเรียนเหมือนStringBuilder
เช่นชื่อวิธีการมีappend
, insert
, delete
...
นี่คือเหตุผลที่ฉันก็ไม่ได้เสียงที่เหมาะสมในการตั้งชื่อวิธีการplusDays
แทนsumDays
, แทนminusDays
subtractDays
ฉันแค่พบว่ามันน่ารำคาญมาก? คุณคิดอย่างไร?
เหตุผลเดียวที่ฉันนึกได้ก็คือวันที่นั้นเป็นวัตถุที่ไม่เปลี่ยนรูปดังนั้นโดยการโทรplusDays
คุณไม่ได้เพิ่มวันในวัตถุดั้งเดิม แต่สร้างวันใหม่ด้วยคุณสมบัติใหม่ แต่นั่นช่างลึกซึ้งมาก
sqrt
เป็นเพียงคำที่โปรแกรมเมอร์คาดว่าจะรับรู้และรู้ คำภาษาอังกฤษคือ "สแควร์รูท" โดยวิธี แต่การตั้งชื่อสิ่งต่าง ๆ ตามสิ่งที่เป็นธรรมชาติในภาษาอังกฤษนั้นไม่ดี ใช้คำว่า "ผิดกฎหมาย" ตัวอย่างเช่นคำภาษาอังกฤษที่ดีอย่างสมบูรณ์แบบ อย่างไรก็ตามถ้ามีคนตั้งชื่อวิธีการของพวกเขาบอกว่าisIllicit
ฉันคิดว่าฉันต้องการที่จะฉีกดวงตาของฉันทุกครั้งที่ฉันดูวิธีการโทรนี้ มันดูน่ากลัวและต้องมีวิธีที่ดีกว่าในการแสดงความคิดเห็น
sum
ฟังดูผิดในบริบทนี้ AddDays
ฉันชอบของสุทธิ
Math.addExact(1, 2)
เพราะคุณพูดว่า "เพิ่ม 1 และ 2" tomorrow.plusDays(2)
เพราะคุณพูดว่า "พรุ่งนี้บวก 2 วัน" หากaddExact
เป็นสมาชิกของอย่างใดก็จะได้รับInteger
1.plusExact(2)
plusDays
จะได้วันที่ใหม่จำนวน x วันในอนาคตในขณะที่addDays
ฉันอาจคาดว่าจะกลายพันธุ์วัตถุต้นฉบับ นั่นเป็นเพียงฉัน แต่ฉันไม่ใช่ทุกคนที่คุ้นเคยกับ Java
sqrt
ซึ่งใช้รากที่สอง การตั้งชื่อวิธีนี้takeSqrt
อาจดูสมเหตุสมผลตามกฎของคุณ แต่การตั้งชื่อวิธีนี้จะไม่ทำให้วิธีการอ่านง่ายขึ้นและไม่ทำให้ชัดเจนขึ้น