เครื่องมือที่ทันสมัยทำให้กระบวนการพัฒนาง่ายขึ้น โดยเฉพาะอย่างยิ่ง การตรวจสอบสไตล์โค้ดของคุณทำได้ง่ายกว่า โดยพยายามลดการจัดรูปแบบที่ "ไม่ได้รับอนุญาต" ให้เหลือน้อยที่สุด ในการทบทวนนี้ ฉันเสนอให้ทำความคุ้นเคยกับเครื่องมือที่ IntelliJ Idea IDE มอบให้กับนักพัฒนา เพื่อทำให้โค้ดน่าอ่านและเข้าใจง่าย
ดังที่คุณเห็นในภาพหน้าจอ เราสามารถระบุการตั้งค่าสำหรับ "การเรียกใช้เมธอดแบบลูกโซ่" เป็น "ตัดคำเสมอ" เช่น แยกเสมอสำหรับการเรียกเมธอดแบบรวม ตอนนี้เรามาคลิกการจัดรูปแบบอีกครั้งในการทดสอบแล้วดูว่าใช้งานได้จริง! แต่บางครั้งก็เกิดขึ้นว่าจำเป็นต้องจัดรูปแบบโค้ดบางส่วนนอกกฎการจัดรูปแบบทั่วไป มาตั้งค่าการจัดรูปแบบดังนี้:
หากต้องการเปิดใช้งานการจัดรูปแบบ จะต้องเปิดใช้งานการสนับสนุนการปิดใช้งานเครื่องหมายการจัดรูปแบบในส่วนสไตล์โค้ด:
ตอนนี้เราสามารถเปลี่ยนโค้ดการทดสอบของเราเพื่อให้การจัดรูปแบบยังคงอยู่ในรูปแบบที่เราเขียน:
อย่างที่คุณเห็น มีการตั้งค่าที่หลากหลายมาก คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการตั้งค่าสไตล์โค้ดได้ที่นี่: " ความช่วยเหลือเกี่ยวกับแนวคิด: สไตล์โค้ด " มีคุณสมบัติการจัดรูปแบบที่สำคัญอีกประการหนึ่งคือการนำเข้าการจัดรูปแบบ มันถูกดำเนินการแยกกันและถูกเรียก
หลังจากนี้เราจะสามารถนำเข้าหรือส่งออกการตั้งค่าได้:
อีกทางเลือกหนึ่งคือการนำเข้าการตั้งค่าการนำเข้าไอเดีย:
ตัวเลือกที่สามคือพื้นที่เก็บข้อมูลการตั้งค่า สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ Settings Repository โปรดดูเอกสารประกอบ "IntelliJ Idea Help: Settings Repository " ในหัวข้อการกระจายสไตล์เดียวในทีม ฉันอดไม่ได้ที่จะสังเกตการสนับสนุนที่ดีสำหรับสไตล์จาก Eclipse IDE ในการดำเนินการนี้คุณจะต้องติดตั้งปลั๊กอินแยกต่างหาก: เปิดการตั้งค่าไอเดียผ่านไฟล์ -> การตั้งค่า (Ctrl + Alt + S) และไปที่ส่วนปลั๊กอิน หากต้องการค้นหาปลั๊กอินใหม่ ให้คลิกปุ่ม
ตอนนี้หลังการติดตั้งคุณต้องรีสตาร์ท Idea - นี่เป็นขั้นตอนมาตรฐาน หลังจากนั้นในที่เดียวกันในการตั้งค่า Idea เราจะพบส่วนใหม่: “Eclipse Code Formatter” สามารถดูตัวอย่างไฟล์รูปแบบสำหรับ Eclipse ได้ ที่นี่ . มันจะมีลักษณะดังนี้:
นอกจากนี้ ในคอลัมน์ปัญหา ยังมีลิงก์ไปยังคำอธิบายปัญหาบนเว็บไซต์ปลั๊กอิน pmd ตัวอย่างเช่น สำหรับข้อผิดพลาด "headerCommentRequirement Requirement Requirement" ลิงก์จะไปที่นี่: pmd - CommentRequired ข้อผิดพลาดนี้บอกเป็นนัยว่าคลาสของเราไม่มี JavaDoc การมีอยู่ของ JavaDoc บนคลาสสามารถกำหนดค่าได้โดยใช้เทมเพลต:
และระบุเนื้อหาสำหรับ File Header:
หลังจากนี้ เราสามารถเปลี่ยนความคิดเห็นเหนือคลาส App ให้เป็น JavaDoc และดูว่าข้อผิดพลาดนั้นหายไปใน Build ใหม่แล้ว
การแนะนำ
ภาษาโปรแกรมมีความคล้ายคลึงกับภาษาที่ผู้คนพูดกันมาก ข้อแตกต่างเพียงอย่างเดียวคือนี่เป็นภาษาพิเศษที่ใช้ในการสื่อสารกับคอมพิวเตอร์ในตอนแรกเพื่ออธิบายสิ่งที่เราต้องการจากคอมพิวเตอร์ แต่ไม่สามารถสื่อสารแบบตัวต่อตัวกับคอมพิวเตอร์ได้ แม้ว่าคุณจะเริ่มเรียนภาษาการเขียนโปรแกรม แต่คุณก็ยังดูหนังสือหรือแหล่งข้อมูลทางการศึกษาเช่น JavaRush และในแหล่งนี้ คุณเห็นโค้ดที่คอมพิวเตอร์จะเข้าใจ แต่คุณควรเข้าใจเมื่อคุณได้รับความรู้เกี่ยวกับภาษา Java เช่นเดียวกับภาษาอื่นๆ การเขียนโปรแกรมมีกฎบางประการในการสร้างโค้ด ตัวอย่างเช่นการเขียนแบบมีรั้วกั้นในสังคมสุภาพถือเป็นมารยาทที่ไม่ดี และในภาษา Java การเรียกวิธีการด้วยตัวพิมพ์ใหญ่ถือเป็นการละเมิดรูปแบบโค้ดอย่างร้ายแรง กฎสำหรับการจัดรูปแบบโค้ด Java ได้รับการกำหนดไว้ในเอกสารJava Code Convention นอกจากนี้ รูปแบบของโค้ดสามารถควบคุมรายละเอียดเล็กๆ น้อยๆ ได้ เช่น การเยื้อง และเมื่อมีการใช้เครื่องมือควบคุมเวอร์ชัน ลองจินตนาการถึงฝันร้ายทั้งหมดที่ทุกคนบันทึกไฟล์โดยเยื้องเป็นแท็บหรือเยื้องเป็นช่องว่าง สำหรับคนที่ต้องตรวจสอบการแก้ไขเพียงวิธีเดียวจะเป็นอย่างไร แต่ไฟล์ทั้งหมดจะเปลี่ยนไปเนื่องจากการแก้ไขช่องว่างในแท็บหรือในทางกลับกัน โดยปกติแล้ว เช่นเดียวกับภาษาทั่วไป สไตล์อาจแตกต่างกันไปขึ้นอยู่กับว่ามีการใช้ภาษาใด ตัวอย่างเช่น บนอินเทอร์เน็ต คุณจะพบGoogle Java Style GuideหรือTwitter Java Style Guide สำหรับบทความทบทวนนี้ เราจะต้องมีหัวข้อทดสอบ มาใช้บริการของระบบสร้างโปรเจ็กต์ Gradle กัน มันจะช่วยให้เราสามารถสร้างโครงการใหม่โดยใช้เทมเพลตเพื่อการเริ่มต้นอย่างรวดเร็ว Gradle มีปลั๊กอินที่ยอดเยี่ยม: Build Init Plugin ไปที่ไดเร็กทอรีใหม่และดำเนินการคำสั่งที่นั่น:gradle init --type java-application
หลังจากนั้นให้เปิด IntelliJ Idea หากคุณเห็นหน้าต่างที่มีโปรเจ็กต์ที่เปิดอยู่แล้ว (คุณจะเห็นตัวแก้ไขโค้ด แผนผังโครงสร้างโปรเจ็กต์) ให้ปิดโปรเจ็กต์นี้โดยใช้File -< Close Project
. ตอนนี้ในหน้าต่างต้อนรับ เราจะดำเนินการ"Import Project"
และนำเข้าโครงการใหม่ของเรา เมื่อนำเข้า ให้ตั้งค่า"Use autoimport"
สถานะ เรามาดูกันว่าเป็นไปได้หรือไม่ที่จะทำให้ชีวิตง่ายขึ้นด้วยความช่วยเหลือของเครื่องมือการพัฒนาที่ทันสมัย
การจัดรูปแบบโค้ดใน Idea
หลังจากนำเข้าโปรเจ็กต์แล้ว ให้กดคีย์ผสมCtrl+N
แล้วไปที่ชั้นAppTest
เรียน คลาสนี้เป็นคลาสการทดสอบเริ่มต้น ดูเหมือนว่านี้:
import org.junit.Test;
import static org.junit.Assert.*;
public class AppTest {
@Test public void testAppHasAGreeting() {
App classUnderTest = new App();
assertNotNull("app should have a greeting", classUnderTest.getGreeting());
}
}
อะไรดึงดูดสายตาคุณที่นี่ทันที? เห็นด้วยคำอธิบายประกอบที่มีการประกาศวิธีการในหนึ่งบรรทัดซึ่งดูน่าเกลียด จะแก้ไขปัญหานี้ได้อย่างไร? IntelliJ Idea มีส่วนเมนู"Code"
สำหรับการปรับแต่งโค้ดต่างๆ หนึ่งในการปรับเปลี่ยนดังกล่าวคือ"Reformat Code"
การรวมกันที่Ctrl + L
สำคัญ หลังจากแอปพลิเคชัน คำอธิบายประกอบจะอยู่บนบรรทัดหนึ่ง และวิธีการจะอยู่ที่อีกบรรทัดหนึ่ง เป็นที่น่าสังเกตทันทีว่าการดำเนินการนี้ดำเนินการกับส่วนของโค้ดที่เลือก และหากไม่มีสิ่งนั้น การดำเนินการฟอร์แมตจะดำเนินการกับเนื้อหาทั้งหมด ตอนนี้เรามาเพิ่มวิธีทดสอบใหม่:
@Test
public void testSummOfOddNumbers() {
List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
Integer result = data.stream().filter(number -> number % 2 == 0).reduce((n1, n2) -> n1 + n2).get();
assertThat(result, is(12));
}
และการนำเข้าสองรายการ:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
อย่างที่คุณเห็น การดำเนินการบน Stream นั้นอยู่ในบรรทัดเดียว แต่จะเกิดอะไรขึ้นถ้าเราต้องการให้แน่ใจว่าเมธอดที่มีการเรียกที่ถูกล่ามโซ่นั้นจะถูกแยกออกเป็นบรรทัดใหม่เสมอ? ประการหนึ่ง เราสามารถทำได้ด้วยตนเอง แต่จำไว้ว่าเราต้องการให้ทุกอย่างทำงานให้เรา ท้ายที่สุดเราจะลืมเป็นครั้งคราวและรูปแบบโค้ดจะแตกต่างไปจากทุกที่ซึ่งนั่นไม่ดี ปรากฎว่าคุณต้องแก้ไขกฎที่ Idea ดำเนินการจัดรูปแบบ เลือกรายการแนวคิดในเมนูFile -> Settings
(หรือคลิกCtrl + Alt + S
) ในช่องค้นหาในหน้าต่างการตั้งค่า ให้เขียน "รูปแบบโค้ด" ในส่วนสไตล์โค้ด คุณสามารถระบุการตั้งค่าได้ไม่เพียงแต่สำหรับ Java เท่านั้น แต่ตอนนี้เราสนใจ Java แล้ว อย่างที่คุณเห็น การตั้งค่าจะแบ่งออกเป็นหลายแท็บ สิ่งที่มีประโยชน์มากที่สุดคือผลลัพธ์ของการเปลี่ยนแปลงจะแสดงในตัวอย่างทางด้านขวาของหน้าต่าง:



@Test
public void testSummOfOddNumbers() {
List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
// @formatter:off
Integer result = data.stream().filter(number -> number % 2 == 0)
.reduce((n1, n2) -> n1 + n2)
.get();
assertThat(result, is(12));
// @formatter:on
}
ใช่ หากคุณสังเกตเห็น: เมื่อคุณกด Tab Idea จะตีความว่าเป็นช่องว่างสำหรับคุณ (พฤติกรรมเริ่มต้น) แต่คุณสามารถเปลี่ยนสิ่งนี้ได้ใน Code Style:

"Optimize Imports"
และอยู่ในรายการเมนูCode -> Optimize Imports
(Ctrl + Alt + O) การเพิ่มประสิทธิภาพการนำเข้าจะลบการนำเข้าที่ไม่จำเป็นออกและยังจัดลำดับที่ถูกต้องตามการตั้งค่าในแท็บการนำเข้าของการตั้งค่าลักษณะโค้ดสำหรับ Java นอกจากนี้ หากคุณต้องการให้การจัดรูปแบบเกิดขึ้น โดย อัตโนมัติ ข่าวดีก็คือ คุณสามารถทำได้โดยใช้ ปลั๊กอิน Save Actions
การกระจายการตั้งค่าให้กับทีม
เยี่ยมมาก เราเห็นแล้วว่าเราสามารถปรับแต่งรูปแบบการจัดรูปแบบให้เหมาะกับเราได้ แต่จะใช้สไตล์นี้ในทีมได้อย่างไร? ง่ายมาก. มีหลายตัวเลือก วิธีที่ง่ายที่สุดคือการบันทึกไดอะแกรม เปิดการตั้งค่าแนวคิดผ่านไฟล์ -> การตั้งค่า (หรือกด Ctrl + Alt + S) ในส่วน Code Style เราจะเห็น Scheme จารึก นี่คือรูปแบบการจัดรูปแบบของเรา ตามค่าเริ่มต้น รูปแบบจะถูกระบุด้วยชื่อ ค่าเริ่มต้น และถัดจากนั้นคือคำอธิบายประกอบ IDE ซึ่งหมายความว่าการตั้งค่านี้มีไว้สำหรับ IDE ของเราเท่านั้น และไม่มีผลกับใครเลย หากต้องการสร้างรูปแบบ "กำหนดเอง" ให้คลิกปุ่มทางด้านขวาเพื่อสร้าง "ซ้ำ" และตั้งชื่อเช่น: JavaRush


"Browse Repositories"
หลังจากนั้นเราจะพบปลั๊กอิน Eclipse Code Formatter ในหน้าต่างค้นหา


ข้อกำหนดในการกระชับ
นอกจากเครื่องมือ Idea แล้ว คุณยังสามารถใช้ปลั๊กอินระบบบิลด์เพื่อกระชับข้อกำหนดได้อีกด้วย ไม่มีวิธีตรวจสอบได้ว่าบุคคลนั้นใช้การจัดรูปแบบหรือไม่ ถ้าในทีมมี 5 คนก็ยังเป็นไปได้ หากบริษัทมีพนักงาน 100 คน ก็ถือว่าไม่สมจริง ใช่แล้ว แม้แต่ห้าคนก็ยังยากต่อการติดตาม และทำไมต้องเสียเวลากับเรื่องนี้? การห้ามการรวบรวมโครงการจะง่ายกว่ามากหากมีการละเมิดกฎเกณฑ์บางประการ อันที่จริง นี่เป็นหัวข้อแยกต่างหากทั้งหมดที่เรียกว่า "ตรวจสอบรหัส" สำหรับวัตถุประสงค์ของบทความนี้ ฉันแค่อยากจะแสดงให้เห็นว่ามันทำงานอย่างไร pmdหนึ่งในปลั๊กอินที่พบบ่อยที่สุดสำหรับ Gradle (เนื่องจากมันรวบรวมโครงการของเรา หากคุณจำได้) คือ หากต้องการเปิดใช้งาน เพียงไปที่สคริปต์บิลด์ของโปรเจ็กต์ gradle ของเรา (ไฟล์ build.gradle ในรูทของโปรเจ็กต์ของเรา) และระบุ pmd ไว้ถัดจากปลั๊กอินที่เหลือ:
plugins {
// Apply the java plugin to add support for Java
id 'java'
// Check source code
id 'pmd'
// Apply the application plugin to add support for building an application
id 'application'
}
ตอนนี้เราสามารถตั้งค่ารายละเอียดเพิ่มเติมได้ที่นั่น:
pmd {
ignoreFailures = false
pmdTest.enabled = true
ruleSets = [
'java-basic',
'java-braces',
'java-clone',
'java-codesize',
'java-comments',
'java-controversial',
'java-coupling',
'java-design',
'java-empty',
'java-finalizers',
'java-imports',
'java-optimizations',
'java-strictexception',
'java-strings',
'java-typeresolution',
'java-unnecessary',
'java-unusedcode'
]
}
แม้แต่ในโครงการของเราทุกอย่างก็ไม่ดีอีกต่อไป มารัน gradle build และรับข้อผิดพลาดกัน สิ่งที่ดีคือมีการสร้างรายงานระหว่างการประกอบ และหากมีข้อผิดพลาดเราจะได้รับข้อความดังนี้:
BUILD FAILED in 35s
6 actionable tasks: 6 executed
7 PMD rule violations were found. See the report at: file:///C:/_study/codestyle/build/reports/pmd/main.html
ถ้าเราไปที่รายงานเราจะเห็นสิ่งนี้:



บรรทัดล่าง
รูปแบบโค้ดเป็นสิ่งสำคัญสำหรับโครงการที่มีประสิทธิผล โค้ดที่สวยงามที่เขียนตามกฎทั่วไปคือการรับประกันว่าเพื่อนร่วมงานของคุณจะเข้าใจได้ง่ายและรวดเร็วยิ่งขึ้น และจะไม่พูดอะไรที่น่ารักเกี่ยวกับคุณเลย ด้วยเครื่องมือการพัฒนาที่ทันสมัย การยึดติดกับกฎเกณฑ์จึงไม่ใช่เรื่องยาก ฉันหวังว่ารีวิวนี้แสดงให้เห็นว่านี่เป็นกรณีนี้จริงๆ ตามปกติมีเนื้อหาเล็กน้อยในหัวข้อ:- วิดีโอจาก JetBrainsTV: " ตรวจสอบโค้ด (IntelliJ IDEA) "
- การตรวจสอบ " การวิเคราะห์โค้ดด้วย Gradle Plugins "
- หลักสูตร " คุณภาพโค้ดอัตโนมัติ "
GO TO FULL VERSION