เพิ่งเริ่มใช้ลอมบอกวันนี้ จนถึงตอนนี้ฉันชอบมัน แต่ข้อเสียเปรียบอย่างหนึ่งที่ฉันไม่เห็นก็คือการสนับสนุนการสร้างใหม่
หากคุณมีคลาสที่มีคำอธิบายประกอบด้วยคลาส@Data
จะสร้าง getters และ setters สำหรับคุณตามชื่อฟิลด์ หากคุณใช้หนึ่งใน getters เหล่านั้นในคลาสอื่นจากนั้นตัดสินใจว่าฟิลด์นั้นมีชื่อไม่ดีมันจะไม่พบการใช้งานของ getters และ setters เหล่านั้นและแทนที่ชื่อเก่าด้วยชื่อใหม่
ฉันคิดว่าจะต้องทำผ่านปลั๊กอิน IDE และไม่ต้องผ่านลอมบ็อก
อัปเดต (22 ม.ค. 56)
หลังจากใช้ลอมบอกเป็นเวลา 3 เดือนฉันยังคงแนะนำสำหรับโครงการส่วนใหญ่ อย่างไรก็ตามฉันค้นหาข้อเสียอื่นที่คล้ายกับที่กล่าวข้างต้น
หากคุณมีชั้นเรียนให้บอกMyCompoundObject.java
ว่ามีสมาชิก 2 คนทั้งที่มีคำอธิบายประกอบ@Delegate
พูดmyWidgets
และmyGadgets
เมื่อคุณโทรmyCompoundObject.getThingies()
จากชั้นเรียนอื่นเป็นไปไม่ได้ที่จะรู้ว่ามันเป็นตัวแทนWidget
หรือGadget
เพราะคุณไม่สามารถข้ามไปยังแหล่งภายใน IDE ได้อีกต่อไป
การใช้ Eclipse "Generate Delegate Methods ... " ช่วยให้คุณสามารถใช้งานฟังก์ชั่นเดียวกันได้อย่างรวดเร็วและรวดเร็ว ข้อเสียคือมันตัดแหล่งที่มาของคุณด้วยรหัสสำเร็จรูปที่เน้นสิ่งที่สำคัญ
อัปเดต 2 (26 ก.พ. 56)
หลังจาก 5 เดือนเรายังคงใช้ลอมบอกอยู่ แต่ฉันมีเรื่องน่ารำคาญอื่น ๆ การไม่มีตัวรับสัญญาณที่ประกาศ & ตัวตั้งค่าอาจทำให้เกิดความรำคาญในบางครั้งเมื่อคุณพยายามทำความคุ้นเคยกับรหัสใหม่
ตัวอย่างเช่นถ้าฉันเห็นวิธีที่เรียกว่าgetDynamicCols()
แต่ฉันไม่รู้ว่ามันเกี่ยวกับอะไรฉันมีอุปสรรค์พิเศษที่จะข้ามไปเพื่อกำหนดวัตถุประสงค์ของวิธีนี้ อุปสรรคบางอย่างคือลอมบอกบางอันขาดปลั๊กอินอัจฉริยะของลอมบอก อุปสรรครวมถึง:
- ขาด JavaDocs ถ้าฉัน javadoc ฟิลด์ฉันหวังว่าผู้ทะเยอทะยานและผู้ตั้งค่าจะสืบทอด javadoc นั้นผ่านขั้นตอนการรวบรวมลอมบอก
- ข้ามไปที่นิยามวิธีการกระโดดฉันไปที่ชั้นเรียน แต่ไม่ได้ทรัพย์สินที่สร้างทะเยอทะยาน นี่เป็นปัญหาปลั๊กอิน
- เห็นได้ชัดว่าคุณไม่สามารถตั้งค่าเบรกพอยต์ใน getter / setter เว้นแต่ว่าคุณสร้างหรือโค้ดวิธี
- หมายเหตุ: การค้นหาอ้างอิงนี้ไม่ใช่ปัญหาอย่างที่ฉันคิดไว้ก่อน คุณจำเป็นต้องใช้มุมมองที่เปิดใช้งานมุมมองโครงร่าง ไม่ใช่ปัญหาสำหรับนักพัฒนาส่วนใหญ่ ปัญหาของฉันคือฉันใช้ Mylyn ซึ่งกรอง
Outline
มุมมองของฉันดังนั้นฉันจึงไม่เห็นวิธีการ การขาดการอ้างอิง ถ้าฉันต้องการดูว่าใครโทรgetDynamicCols(args...)
มาฉันต้องสร้างหรือรหัสผู้ตั้งค่าเพื่อให้สามารถค้นหาการอ้างอิง
อัปเดต 3 (7 มี.ค. 56)
เรียนรู้ที่จะใช้วิธีการต่าง ๆ ในการทำสิ่งต่าง ๆ ใน Eclipse ฉันเดา คุณสามารถตั้งค่าเบรกพอยต์แบบมีเงื่อนไข (BP) ตามวิธีที่สร้างขึ้นโดยลอมบอก โดยใช้มุมมองของคุณสามารถคลิกขวาที่วิธีการที่จะOutline
Toggle Method Breakpoint
จากนั้นเมื่อคุณกดปุ่ม BP คุณสามารถใช้Variables
มุมมองการดีบักเพื่อดูว่าวิธีการที่สร้างขึ้นชื่อพารามิเตอร์ใด (ปกติจะเหมือนกับชื่อฟิลด์) และสุดท้ายใช้Breakpoints
มุมมองเพื่อคลิกขวาที่ BP และเลือกBreakpoint Properties...
เพื่อเพิ่มเงื่อนไข ดี
UPDATE 4 (16 ส.ค. 56)
Netbeans ไม่ชอบเมื่อคุณอัพเดทการพึ่งพาลอมบอกใน Maven pom ของคุณ โปรเจ็กต์ยังคงคอมไพล์ แต่ไฟล์ถูกตั้งค่าสถานะว่ามีข้อผิดพลาดในการคอมไพล์เนื่องจากไม่เห็นวิธีที่ลอมบ็อคกำลังสร้าง การล้างแคช Netbeans ช่วยแก้ไขปัญหา ไม่แน่ใจว่ามีตัวเลือก "Clean Project" เหมือนใน Eclipse หรือไม่ ปัญหาเล็กน้อย แต่ต้องการทำให้เป็นที่รู้จัก
อัปเดต 5 (17 มกราคม '14)
ลอมบอกเล่นได้ไม่ดีกับ Groovy หรืออย่างน้อยก็ตลอดgroovy-eclipse-compiler
ไป คุณอาจต้องดาวน์เกรดคอมไพเลอร์ของคุณ
Maven Groovy และ Java + Lombok
อัปเดต 6 (26 มิ.ย. '14)
คำเตือน ลอมบอกเป็นคนเสพติดเล็กน้อยและถ้าคุณทำงานในโครงการที่คุณไม่สามารถใช้มันด้วยเหตุผลบางอย่างมันจะรบกวนความโกรธของคุณ คุณอาจจะดีกว่าไม่เคยใช้เลย
อัปเดต 7 (23 ก.ค. '14)
นี่เป็นการอัปเดตที่น่าสนใจเนื่องจากเป็นเรื่องความปลอดภัยโดยตรงในการยอมรับลอมบอกที่ OP สอบถาม
ตั้งแต่วันที่ v1.14 @Delegate
คำอธิบายประกอบได้รับการลดระดับเป็นสถานะการทดลอง รายละเอียดมีการบันทึกไว้ในเว็บไซต์ของพวกเขา ( ลอมบ็อกมอบหมายเอกสาร )
สิ่งนี้คือถ้าคุณใช้คุณสมบัตินี้ตัวเลือกแบ็คเอาท์ของคุณมี จำกัด ฉันเห็นตัวเลือกดังนี้:
- ลบ
@Delegate
คำอธิบายประกอบด้วยตนเองและสร้าง / handcode รหัสผู้แทน สิ่งนี้จะยากขึ้นเล็กน้อยหากคุณใช้แอททริบิวต์ในหมายเหตุประกอบ
- ลบไฟล์ที่มี
@Delegate
คำอธิบายประกอบและอาจเพิ่มกลับเข้าไปในคำอธิบายประกอบที่คุณต้องการ
- อย่าอัปเดตลอมบอกหรือรักษาทางแยก (หรือใช้ชีวิตด้วยการใช้ฟีเจอร์ประสบการณ์)
- Delombok โครงการทั้งหมดของคุณและหยุดใช้ลอมบอก
เท่าที่ผมสามารถบอกได้Delombok ไม่ได้มีตัวเลือกในการลบย่อยของบันทึกย่อ ; มันคือทั้งหมดหรือไม่มีอะไรอย่างน้อยสำหรับบริบทของไฟล์เดียว ฉันเปิดตั๋วเพื่อขอคุณสมบัตินี้ด้วยธง Delombok แต่ฉันจะไม่คาดหวังว่าในอนาคตอันใกล้
UPDATE 8 (20 ตุลาคม '14)
ถ้าเป็นตัวเลือกสำหรับคุณข้อเสนอ Groovy ที่สุดของผลประโยชน์เดียวกันของลอมบอกบวกภาระเรือของคุณสมบัติอื่น ๆ รวมทั้ง@Delegate หากคุณคิดว่าคุณมีปัญหาในการขายความคิดให้กับพลังที่เป็นอยู่ให้ดูที่@CompileStatic
หรือเพิ่มความคิดเห็น@TypeChecked
เพื่อดูว่าสิ่งนั้นสามารถช่วยคุณได้หรือไม่ ในความเป็นจริงเป็นเป้าหมายหลักของการปล่อย Groovy 2.0 เป็นความปลอดภัยแบบคงที่
อัปเดต 9 (ก.ย. 1 '15)
ลอมบอกยังคงได้รับการบำรุงรักษาและปรับปรุงอย่างแข็งขันซึ่งเป็นลางที่ดีในระดับความปลอดภัยของการยอมรับ @Builderคำอธิบายประกอบเป็นหนึ่งในคุณสมบัติใหม่ที่ชื่นชอบ
อัปเดต 10 (17 พ.ย. 58)
อาจดูเหมือนไม่เกี่ยวข้องโดยตรงกับคำถามของ OP แต่เป็นการแบ่งปันที่คุ้มค่า หากคุณกำลังมองหาเครื่องมือที่จะช่วยให้คุณลดปริมาณของรหัสสำเร็จรูปที่คุณเขียนคุณยังสามารถตรวจสอบGoogle Auto - โดยเฉพาะในAutoValue หากคุณดูที่เด็คสลิปของพวกเขารายการลอมบอกเป็นวิธีแก้ปัญหาที่เป็นไปได้สำหรับปัญหาที่พวกเขากำลังพยายามแก้ไข ข้อเสียพวกเขาสำหรับลอมบอกคือ:
- รหัสที่แทรกไว้จะมองไม่เห็น (คุณไม่สามารถ "เห็น" วิธีการที่จะสร้าง) [หมายเหตุที่ทราบแล้ว - จริง ๆ แล้วคุณทำได้ แต่เพียงต้องการตัวถอดรหัส)
- แฮ็คคอมไพเลอร์ไม่ได้มาตรฐานและเปราะบาง
- "ในมุมมองของเรารหัสของคุณไม่ได้เป็นจาวาจริงๆอีกต่อไป"
ฉันไม่แน่ใจว่าฉันเห็นด้วยกับการประเมินของพวกเขามากแค่ไหน และด้วยข้อเสียของ AutoValue ที่บันทึกไว้ในสไลด์ฉันจะติดกับลอมบอก (ถ้า Groovy ไม่ใช่ตัวเลือก)
UPDATE 11 (8 กุมภาพันธ์ '16)
ผมพบว่าฤดูใบไม้ผลิตานาโรมีบางส่วนคำอธิบายประกอบที่คล้ายกัน ฉันรู้สึกประหลาดใจเล็กน้อยที่พบว่า Roo ยังคงเป็นสิ่งสำคัญและการค้นหาเอกสารประกอบสำหรับคำอธิบายประกอบนั้นค่อนข้างหยาบ การกำจัดยังไม่ได้ดูง่ายเหมือน de-lombok ลอมบอกดูเหมือนเป็นตัวเลือกที่ปลอดภัยกว่า
อัปเดต 12 (17 ก.พ. 59)
ในขณะที่พยายามหาเหตุผลว่าทำไมจึงปลอดภัยที่จะนำลอมบอกสำหรับโครงการที่ฉันกำลังทำงานอยู่ฉันพบทองคำชิ้นหนึ่งที่เพิ่มเข้ามาด้วยv1.14
- The Configuration System ! นี่คือหมายความว่าคุณสามารถกำหนดค่าโครงการให้ยกเลิกคุณสมบัติบางอย่างที่ทีมของคุณเห็นว่าไม่ปลอดภัยหรือไม่พึงประสงค์ ยังดีกว่ามันยังสามารถสร้างการตั้งค่าเฉพาะไดเรกทอรีด้วยการตั้งค่าที่แตกต่างกัน นี่มันเจ๋งมาก.
UPDATE 13 (4 ตุลาคม '16)
ถ้าชนิดของสิ่งนี้มีความสำคัญกับคุณโอลิเวอร์ Gierkeรู้สึกว่ามันเป็นความปลอดภัยที่จะเพิ่มลอมบอกฤดูใบไม้ผลิข้อมูลส่วนที่เหลือ
อัปเดต 14 (26 ก.ย. '17)
ตามที่ระบุโดย@gavenkoaในความคิดเห็นเกี่ยวกับคำถามOPs การสนับสนุนคอมไพเลอร์ JDK9 ยังไม่พร้อมใช้งาน (ฉบับที่ 985) นอกจากนี้ดูเหมือนว่าจะไม่ใช่เรื่องง่ายสำหรับทีมลอมบอกในการเดินทาง
อัปเดต 15 (26 มีนาคม '18)
การเปลี่ยนแปลงลอมบอกระบุเมื่อวันที่ v1.16.20 "การรวบรวมลอมบอกบน JDK1.9 เป็นไปได้ตอนนี้เป็นไปได้ " แม้ว่า# 985ยังคงเปิดอยู่
อย่างไรก็ตามการเปลี่ยนแปลงเพื่อรองรับ JDK9 นั้นจำเป็นต้องมีการเปลี่ยนแปลงบางอย่าง แยกทั้งหมดเพื่อการเปลี่ยนแปลงในค่าเริ่มต้น มันเป็นเรื่องเล็กน้อยที่เกี่ยวข้องกับการที่พวกเขานำเสนอการเปลี่ยนแปลงที่ไม่หยุดยั้ง แต่เวอร์ชันดังกล่าวกระแทกเฉพาะหมายเลขรุ่น "เพิ่มเติม" (ไปจาก v1.16.18 ถึง v1.16.20) เนื่องจากโพสต์นี้เกี่ยวกับความปลอดภัยหากคุณมีyarn/npm
ระบบการสร้างที่อัพเกรดเป็นรุ่นที่เพิ่มขึ้นล่าสุดโดยอัตโนมัติคุณอาจเข้าสู่การปลุกที่หยาบคาย
อัปเดต 16 (9 มกราคม 19)
ดูเหมือนว่าปัญหาของ JDK9 นั้นได้รับการแก้ไขแล้วและลอมบอกนั้นทำงานร่วมกับ JDK10 และแม้แต่ JDK11 เท่าที่ฉันจะบอกได้
สิ่งหนึ่งที่ฉันสังเกตเห็นว่าเกี่ยวข้องกับด้านความปลอดภัยคือข้อเท็จจริงที่ว่าบันทึกการเปลี่ยนแปลงที่เกิดขึ้นจาก v1.18.2 เป็น v1.18.4 แสดงรายการสองรายการเป็นBREAKING CHANGE
! ฉันไม่แน่ใจว่าการเปลี่ยนแปลงที่เกิดขึ้นในการอัพเดทแพทช์ อาจเป็นปัญหาหากคุณใช้เครื่องมือที่อัพเดตเวอร์ชันแพตช์อัตโนมัติ
javac
เพื่อเปิดการเข้าถึงsun.*
คลาสภายใน((