เป็นความคิดที่ดีหรือไม่ที่จะจัดรูปแบบโค้ดใน eclipse โดยใช้รูปแบบอัตโนมัติ


20

ฉันใช้ eclipse สำหรับการเขียนโค้ดและภาษาที่เราใช้คือ Java เมื่อมีคนแนะนำว่าให้จัดรูปแบบรหัสอย่างถูกต้องให้ใช้ตัวจัดรูปแบบอัตโนมัติ (CTRL + SHIFT + F) ในขณะที่คำสั่งนี้จัดรูปแบบรหัส แต่บางครั้งฉันรู้สึกว่ารูปลักษณ์โดยรวมนั้นแปลกและไม่สามารถอ่านได้จริง

ดังนั้นนี่คือสิ่งที่แนะนำให้ทำ หากไม่ใช่สิ่งที่ดีกว่าในการจัดรูปแบบโค้ดของเราใน eclipse?


ผมใช้ความสามารถในการจัดรูปแบบอัตโนมัติของ emacs ตลอดเวลา - มีศักยภาพสำหรับการชนกัน (เช่นกับ SC ผสาน) .. แต่โดยรวมมาตรฐานรูปแบบของคุณมีประโยชน์มาก
วอร์เรน

คำตอบ:


34

กฎการจัดรูปแบบโค้ดที่เข้มงวดมีประโยชน์เมื่อนักพัฒนาหลายคนทำงานกับโค้ดเดียวกันโดยใช้ระบบควบคุมเวอร์ชัน การรวมกันอาจเป็นเรื่องเจ็บปวดหากนักพัฒนาซอฟต์แวร์ที่แตกต่างกันมีกฎการจัดรูปแบบที่แตกต่างกันเนื่องจากรหัสเดียวกันจะดูแตกต่างกันสำหรับเครื่องมือการรวม

Eclipse (หรือ IDE ที่ดีสำหรับเรื่องนั้น) มีกฎการจัดรูปแบบโค้ดที่สามารถกำหนดเองได้ในส่วนการกำหนดค่าตามความชอบ (Java> สไตล์โค้ด> ฟอร์แมตเตอร์) เลือกสิ่งที่คุณชอบที่สุด แต่ดูที่ข้อกำหนดรหัสมาตรฐานของ Javaด้วย โปรเจ็กต์โอเพนซอร์สจำนวนมากยังมีระเบียบโค้ดของตัวเองที่สามารถบังคับใช้กับตัวจัดรูปแบบ Eclipse

นอกจากนี้ยังมีเครื่องมือมาตรฐานเช่น CodeStyle, PMD และ Findbugs ที่บังคับใช้กฎเพิ่มเติมและช่วยหลีกเลี่ยงรูปแบบและข้อผิดพลาดทั่วไป (ระดับต่ำ)


4
เมื่อคุณติดตั้งฟอร์แมตเตอร์ตามที่คุณต้องการแล้ว มีปุ่ม "ส่งออก" ที่จะช่วยให้คุณบันทึกเป็นไฟล์. xml เราใส่สิ่งนี้ลงในที่เก็บ SVN ของเราดังนั้นทุกคนสามารถเข้าถึงได้เมื่อพวกเขาตรวจสอบโครงการ
Chris

ฉันเห็นด้วยกับสิ่งนี้และใช้ PMD และ FindBugs และทั้งหมด แต่นี่เป็นความคิดที่ดีถ้าทุกคนในทีมติดตามและใช้กฎการจัดรูปแบบโค้ด ไม่เช่นนั้นคุณจะจบลงด้วยการกระทำที่เป็นการเปลี่ยนแปลง + การจัดรูปแบบโดยนักพัฒนาซอฟต์แวร์บางคนไม่ใช่ผู้อื่นและยากที่จะเห็นการเปลี่ยนแปลง "ของจริง" กล่าวอีกนัยหนึ่งถ้ารหัสเก่าไม่ได้ฟอร์แมตด้วยตัวจัดรูปแบบอัตโนมัติอย่าฟอร์แมตด้วยการเปลี่ยนแปลงเพิ่มเติมในการคอมมิชชันเดียว
Mufasa

2
หากคุณปรับแต่งการตั้งค่าการจัดรูปแบบโค้ดให้ผลักดันการตั้งค่าเหล่านั้นลงในแหล่งควบคุมเพื่อให้นักพัฒนาซอฟต์แวร์ทั้งหมดได้รับหรือเผยแพร่ในวิกิหรือเอกสารประกอบสำหรับนักพัฒนาเพื่อให้ทุกคนสามารถเห็นด้วยกับสไตล์
Mufasa

24

ฉันพบว่าการจัดรูปแบบอัตโนมัติมีประโยชน์มาก แทนที่จะใช้ microdecisions ตลอดเวลาในการจัดรูปแบบรหัส - สิ่งที่ผิดพลาดได้ง่ายและทำให้เกิด "ความขัดแย้งทางปัญญา" - คุณสามารถตั้งค่ากฎการจัดรูปแบบและปล่อยให้ Eclipse จัดรูปแบบรหัสให้คุณ (โดยอัตโนมัติโดยใช้ "บันทึกการกระทำ" ) แน่นอนสิ่งนี้ต้องการให้คุณมีฐานรหัสที่มีการจัดรูปแบบที่สอดคล้องกันหรือคุณมีอำนาจสั่งการฟอร์แมตรหัสใหม่ตามกฎที่คุณตั้งค่า

การเปิดใช้งาน "autoformat-on-save" นั้นเหมือนกับการคอมไพล์ที่เพิ่มขึ้นมันช่วยให้สมองของคุณจดจ่อกับโค้ดตัวเองแทนที่จะกังวลกับปัญหาเล็ก ๆ น้อย ๆ เช่นการจัดรูปแบบโค้ดหรือไวยากรณ์

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

// @formatter:off

... my nicely formatted table here ...

// @formatter:on

5
+1: ฉันไม่เคยรู้เกี่ยวกับ (หรือเพื่อความถูกต้องมากขึ้นฉันไม่เคยใส่ใจที่จะค้นหา) แท็กเปิด / ปิด
Paul Cager

1
การบันทึกอัตโนมัติแบบบันทึกจะดีถ้าทุกคนในโครงการใช้ หากมีเพียงนักพัฒนาบางคนใช้มันก็ง่ายเกินไปที่จะยอมรับการเปลี่ยนแปลงด้วยการจัดรูปแบบโค้ดในเวลาเดียวกันซึ่งทำให้ยากต่อการค้นหาการเปลี่ยนแปลง "ของจริง" ในคอมมิท
Mufasa

@Mufasa ใช่คุณพูดถูก
JesperE

1
เมื่อคุณไม่ต้องการแสดงความคิดเห็นรูปแบบที่คุณสามารถเขียน / * - รูปแบบซุปเปอร์ของฉัน * / คราสไม่ได้จัดรูปแบบการแสดงความคิดเห็นดังกล่าว :)
Dawid Drozd

5

การแนะนำจะขึ้นอยู่กับว่าคุณถามหรือไม่

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

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

IDE หรือเครื่องมือที่ดีมักจะทำงานกึ่งดีในการฟอร์แมตโค้ดให้คุณ แต่จะไม่ทำให้อ่านได้อย่างที่คุณต้องการ

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


5

คุณควรใช้มันตลอดเวลาเพื่อให้แน่ใจว่าคุณใช้สไตล์ที่สอดคล้องกันในไฟล์ต้นฉบับทั้งหมดของคุณ วิธีนี้จะช่วยให้คุณประหยัดเวลาได้มากซึ่งคุณมักจะพยายามปรับการจัดรูปแบบด้วยตนเอง

ตัวจัดรูปแบบ Java ใน Eclipse ทำงานได้ค่อนข้างดีและสามารถปรับแต่งได้อย่างสมบูรณ์ หากคุณไม่เห็นด้วยกับการตั้งค่าเริ่มต้น (ซึ่งฉันเข้าใจได้โดยสมบูรณ์) คุณควรปรับฟอร์แมตเตอร์ให้เป็นสไตล์ส่วนตัวของคุณเองหรืออะไรก็ตามที่เป็นมาตรฐานที่คุณใช้ คุณสามารถทำได้ในการกำหนดค่าตามความชอบภายใต้ Java / Code Style / Formatter

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


0

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

โดยเฉพาะถ้าคุณมี "การล้างข้อมูลโค้ด" + "ฟอร์แมตเตอร์" เปิดใช้งานการเยื้องจะได้รับการแก้ไข / ไม่รวมในทุกการบันทึก

Eclipse รุ่นใหม่แต่ละรุ่นอาจเปลี่ยนฟอร์แมตเตอร์ (เพื่อให้ดีขึ้น) แต่จะแนะนำการเปลี่ยนแปลงที่สำคัญเช่น JavaDocs ในที่สุดก็ลบพื้นที่พิเศษนั้นหลังจาก *แต่ที่ได้รับการแนะนำให้รู้จักหลังจาก Helios และจำนวนมากของผู้ประกอบการกำลังใช้รุ่นซอฟแวร์ที่มีอายุมากกว่าเหตุผลของคราส ที่ใช้ Helios เป็นฐาน

ตัวจัดรูปแบบโค้ดที่จัดทำโดย Eclipse ไม่สามารถขยายต่อ API ของพวกเขาในความเป็นจริงมันระบุอย่างชัดเจนCodeFormatter javadoc

คลาสนี้ไม่ได้มีจุดประสงค์ให้ subclassed โดยไคลเอนต์

ได้รับฉันยังไม่พบทางเลือกที่ไม่ใช่เชิงพาณิชย์ในขณะนี้ Jalopy ยังไม่ได้รับการอัปเดตเป็นเวลาหลายปีในขณะนี้และ forks ใน github ยังไม่ได้รับการจัดระเบียบเพื่อให้ฉันแนะนำพวกเขา และไม่มีไซต์อัปเดตใด ๆ สำหรับ Eclipse ที่จะรวมเข้าด้วยกัน จริง ๆ แล้วฉันกำลังวางแผนที่จะจัดรูปแบบรหัสเป็นส่วนหนึ่งของการสร้างเหมือนกับที่ฉันทำ cleanpom-maven-plugin โดยใช้ Jalopy แต่ความคิดนั้นตกไปอยู่ข้างทางเนื่องจากขาดการปรับปรุงสำหรับ Jalopy

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