CodeGym /จาวาบล็อก /สุ่ม /IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด
John Squirrels
ระดับ
San Francisco

IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด

เผยแพร่ในกลุ่ม
ภาษาโปรแกรมมีความคล้ายคลึงกับภาษาพูดมาก ข้อแตกต่างเพียงอย่างเดียวคือเป็นภาษาพิเศษที่มีจุดประสงค์หลักเพื่ออำนวยความสะดวกในการสื่อสารกับคอมพิวเตอร์เพื่ออธิบายให้คอมพิวเตอร์ทราบว่าเราต้องการทำอะไร แต่คุณไม่สามารถสนทนาส่วนตัวกับคอมพิวเตอร์ได้ เมื่อคุณเริ่มเรียนภาษาโปรแกรม คุณดูหนังสือหรือแหล่งข้อมูลทางการศึกษาบางอย่าง เช่น CodeGym และทรัพยากรนี้แสดงให้คุณเห็นรหัสที่คอมพิวเตอร์เข้าใจ แต่คุณก็ควรเข้าใจเมื่อคุณเรียนรู้เกี่ยวกับภาษา Java เช่นเดียวกับภาษาอื่น ๆ กฎการจัดรูปแบบบางอย่างถูกนำมาใช้ในการเขียนโปรแกรม ตัวอย่างเช่น ในสังคมที่สุภาพการ wRiTiNg LiKe Thisจะถือว่าเป็นมารยาทที่ไม่ดี และใน Java การขึ้นต้นชื่อเมธอดด้วยอักษรตัวใหญ่ถือเป็นการละเมิดหลักการเข้ารหัสอย่างร้ายแรง IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด - 1กฎสำหรับรหัส Java ระบุไว้ในเอกสารการประชุมรหัสสำหรับ Java Programming Language แบบแผนการเข้ารหัสยังสามารถควบคุมรายละเอียดเล็กๆ น้อยๆ เช่น การเยื้อง ลองนึกภาพฝันร้ายที่สุดที่การควบคุมเวอร์ชันจะกลายเป็นถ้าการเยื้องไม่สอดคล้องกัน บางคนใช้แท็บและบางคนใช้ช่องว่าง จะเป็นอย่างไรสำหรับคนที่ต้องการตรวจสอบการแก้ไขด้วยวิธีเดียว แต่พบว่าไฟล์ทั้งหมดเปลี่ยนไปเนื่องจากความแตกต่างของช่องว่างและแท็บ แน่นอน เช่นเดียวกับภาษาทั่วไป แบบแผนอาจเปลี่ยนแปลงได้ ขึ้นอยู่กับว่าภาษานั้นใช้ที่ใด ตัวอย่างเช่น ในพื้นที่กว้างใหญ่ของเว็บ คุณจะพบ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 testSumOfOddNumbers() {
 	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;
อย่างที่คุณเห็น การดำเนินการบนสตรีมอยู่ในบรรทัดเดียว แต่ถ้าเราต้องการให้แน่ใจว่าการเรียกเมธอดแบบลูกโซ่นั้นถูกแบ่งออกเป็นบรรทัดใหม่ที่โอเปอเรเตอร์แต่ละช่วงเวลาเสมอ เราสามารถทำได้ด้วยตนเอง แต่จำไว้ว่าเราต้องการให้ทุกอย่างเกิดขึ้นโดยอัตโนมัติ แน่นอนว่าเราจะลืมขั้นตอนแบบแมนนวลเป็นครั้งคราว และจากนั้นเราจะลงเอยด้วยการจัดรูปแบบที่แตกต่างกันในทุกที่ ซึ่งนั่นไม่ดีเลย ดังนั้นเราต้องแก้ไขกฎที่ IDEA ใช้ในการจัดรูปแบบ เลือกFile -> Settingsในเมนู IDEA (หรือกด Ctrl+Alt+S) ป้อน "รูปแบบรหัส" ในช่องค้นหาในหน้าต่างการตั้งค่า ในส่วน "รูปแบบโค้ด" คุณสามารถระบุการตั้งค่าสำหรับภาษาต่างๆ ได้มากกว่าเพียงแค่ Java แต่ Java คือสิ่งที่เราสนใจในตอนนี้ อย่างที่คุณเห็น การตั้งค่าจะแบ่งออกเป็นหลายแท็บ คุณสมบัติที่มีประโยชน์อย่างยิ่งคือตัวอย่างของการดำเนินการแสดงอยู่ที่ส่วนขวาของหน้าต่าง: IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด - 2ภาพหน้าจอแสดงให้เห็นว่าเราสามารถตั้งค่า "การเรียกเมธอดแบบลูกโซ่" เป็น "การรวมเมธอดเสมอ" กล่าวคือ แยกการเรียกเมธอดแบบลูกโซ่ออกเป็นบรรทัดแยกกันเสมอ ตอนนี้คลิกปุ่มการจัดรูปแบบอีกครั้งในคลาสทดสอบและเราเห็นว่าใช้งานได้จริง! แต่บางครั้งคุณจำเป็นต้องจัดรูปแบบรหัสนอกกฎการจัดรูปแบบมาตรฐาน ตั้งค่ารูปแบบดังนี้: IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด - 3เพื่อป้องกันการฟอร์แมต ในส่วน "ลักษณะโค้ด" ให้เปิดใช้ตัวทำเครื่องหมายตัวจัดรูปแบบ: IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด - 4ตอนนี้เราสามารถเปลี่ยนคลาสทดสอบของเราเพื่อไม่ให้โค้ดถูกฟอร์แมตใหม่:

 @Test
 public void testSumOfOddNumbers() {
 	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ส่วน " ": IntelliJ IDEA: รูปแบบการเข้ารหัสและการจัดรูปแบบโค้ด - 5อย่างที่คุณเห็น มีการตั้งค่ามากมายที่นั่น คุณสามารถอ่านรายละเอียดเพิ่มเติมเกี่ยวกับCode styleการตั้งค่า " " ได้ที่นี่: " IDEA Help: Code Style " มีคุณสมบัติการจัดรูปแบบที่สำคัญอีกประการหนึ่ง นั่นคือ การนำเข้าการจัดรูปแบบ การดำเนินการนี้ทำงานแยกกันและเรียกว่า " Optimize Imports" ซึ่งอยู่ภายใต้Code -> Optimize Imports(Ctrl+Alt+O) การปรับอิมพอร์ตให้เหมาะสมจะลบอิมพอร์ตที่ไม่จำเป็นและจัดเรียงอิมพอร์ตตามลำดับที่ถูกต้องตามการตั้งค่าในImportsแท็บ " " ของCode Styleการตั้งค่า " " สำหรับ Java ยิ่งไปกว่านั้น หากคุณต้องการให้การจัดรูปแบบนี้เกิดขึ้นโดยอัตโนมัติ มีข่าวดี:ปลั๊กอิน บันทึกการดำเนินการ

การกระจายการตั้งค่าในคำสั่ง

เราเห็นด้านบนว่าคุณสามารถกำหนดรูปแบบการจัดรูปแบบได้ตามต้องการ แต่คุณจะใช้สไตล์นี้ในทีมได้อย่างไร? ได้อย่างง่ายดายมาก มีหลายตัวเลือก วิธีที่ง่ายที่สุดคือการบันทึกรูปแบบรหัส เปิดการตั้งค่า IDEA โดยใช้File -> Settings(หรือกด Ctrl+Alt+S) ในCode Styleส่วน " " เราสามารถเห็น "โครงการ" นี่คือรูปแบบการจัดรูปแบบของเรา ตามค่าเริ่มต้น โครงร่าง "ค่าเริ่มต้น" จะถูกใช้และมีป้ายกำกับว่า "IDE" ซึ่งหมายความว่าการตั้งค่านี้ใช้กับ IDE ของเราเท่านั้น — จะไม่มีผลกับผู้อื่น หากต้องการสร้างรูปแบบ "กำหนดเอง" ให้ใช้ปุ่มทางด้านขวาเพื่อทำสำเนาและตั้งชื่อ ตัวอย่างเช่น: CodeGym จากนั้น IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด - 6เราจะสามารถนำเข้าหรือส่งออกการตั้งค่า: IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด - 7 อีกทางเลือกหนึ่งคือนำเข้าการตั้งค่า IDEA: IntelliJ IDEA: รูปแบบการเข้ารหัสและการจัดรูปแบบโค้ด - 8ตัวเลือกที่สามคือที่เก็บการตั้งค่า หากต้องการใช้ Settings Repository โปรดดูเอกสารวิธีใช้ IntelliJ IDEA สำหรับรายละเอียดเพิ่มเติมที่ลิงก์ต่อไปนี้: Settings Repository " เมื่อพูดถึงการผลักดันสไตล์ที่เป็นหนึ่งเดียวในทีม ฉันก็อดไม่ได้ที่จะพูดถึงการสนับสนุนที่ดีสำหรับสไตล์จาก Eclipse IDE ในการทำเช่นนี้ คุณต้องติดตั้งปลั๊กอินแยกต่างหาก: เปิดการตั้งค่า IDEA ผ่านไฟล์ -> การตั้งค่า (Ctrl+Alt+S) และไปที่ส่วน "ปลั๊กอิน" หากต้องการค้นหาปลั๊กอินใหม่ ให้คลิกปุ่ม " " จากBrowse Repositoriesนั้น ค้นหาปลั๊กอิน Eclipse Code Formatter ในหน้าต่างค้นหา IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด - 9หลังจากติดตั้งแล้ว คุณจะต้องรีสตาร์ท IDEA ซึ่งเป็นขั้นตอนมาตรฐาน ตอนนี้ทุกอย่างเสร็จเรียบร้อยแล้ว มีส่วนใหม่ในการตั้งค่า IDEA: "Eclipse Code Formatter". มันจะมีลักษณะดังนี้: IntelliJ IDEA: รูปแบบการเข้ารหัสและการจัดรูปแบบโค้ด - 10

ข้อกำหนดที่เข้มงวดยิ่งขึ้น

นอกจากเครื่องมือ IDEA แล้ว คุณยังสามารถใช้ปลั๊กอินสร้างระบบอัตโนมัติเพื่อกระชับความต้องการได้อีกด้วย ไม่มีทางที่คุณจะตรวจสอบได้ด้วยตนเองว่ามีคนใช้การจัดรูปแบบที่เหมาะสม บางทีคุณอาจมี 5 คนในทีม แต่ด้วยจำนวนพนักงาน 100 คนในบริษัทหนึ่ง มันไม่สมจริงเลย และแม้แต่ห้าคนก็ยังติดตามได้ยาก และทำไมต้องเสียเวลากับสิ่งเหล่านี้? มันจะง่ายกว่ามากที่จะป้องกันไม่ให้สร้างโครงการหากมีการละเมิดกฎ อันที่จริง นี่เป็นหัวข้อแยกต่างหากที่เรียกว่า "ตรวจสอบรหัส" ในบทความนี้ ฉันแค่ต้องการแสดงให้คุณเห็นว่ามันทำงานอย่างไร หนึ่งในปลั๊กอิน Gradle ที่ได้รับความนิยมมากที่สุด (เพราะมันสร้างโปรเจ็กต์ของเรา คุณจะจำได้) คือpmd. หากต้องการเปิดใช้งาน เพียงไปที่สคริปต์การสร้างโครงการ 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
เมื่อไปที่รายงาน เราจะเห็นสิ่งนี้: IntelliJ IDEA: รูปแบบการเข้ารหัสและการจัดรูปแบบรหัส - 11นอกจากนี้ คอลัมน์ " Problem" ยังมีลิงก์ไปยังคำอธิบายของปัญหาบนเว็บไซต์ของปลั๊กอิน pmd ตัวอย่างเช่น สำหรับข้อผิดพลาด " " headerCommentRequirement Requiredลิงก์จะมาที่นี่: pmd — CommentRequired ข้อผิดพลาดนี้เป็นข้อบ่งชี้ว่าชั้นเรียนของเราไม่มี JavaDoc เราสามารถใช้เทมเพลตเพื่อกำหนดค่า JavaDoc เหนือคลาส: IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด - 12และระบุเนื้อหาสำหรับFile Header: IntelliJ IDEA: สไตล์การเข้ารหัสและการจัดรูปแบบโค้ด - 13หลังจากนั้น เราสามารถเปลี่ยนความคิดเห็นเหนือคลาส App เป็น JavaDoc และดูว่าข้อผิดพลาดหายไปในบิลด์ใหม่

บรรทัดล่างสุด

สไตล์โค้ดมีความสำคัญต่อการเพิ่มผลผลิตในโครงการ โค้ดที่สวยงามซึ่งเขียนขึ้นตามกฎที่ใช้ร่วมกันรับประกันได้ว่าเพื่อนร่วมงานของคุณจะเข้าใจได้ง่ายและรวดเร็วขึ้น และจะไม่ทำให้คุณโดนวิจารณ์ ด้วยเครื่องมือในการพัฒนาที่ทันสมัย ​​การยึดติดกับกฎของสไตล์จึงไม่ใช่เรื่องยาก ฉันหวังว่าบทวิจารณ์นี้จะพิสูจน์ให้คุณเห็นว่าเป็นเรื่องจริง ต่อไปนี้เป็นเนื้อหาเพิ่มเติมเล็กน้อยในหัวข้อ:
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION