
ลดภาระในการอ่าน สร้างแรงบันดาลใจในการสร้างสรรค์ และเรียนรู้ทักษะ JavaScript ได้อย่างง่ายดาย Rigongyiping, jym, rush~
ที่ เช่น โค้ดต่อไปนี้:
const isOldEnough = (person) => {
ส่งคืน person.getAge() >= 100;
} ใครจะรู้ว่า 100 นี้หมายถึงอะไรโดยเฉพาะ? โดยปกติเราจำเป็นต้องรวมบริบทของฟังก์ชันเพื่อคาดเดาและตัดสินว่าค่า 100 นี้อาจเป็นตัวแทนค่าใดโดยเฉพาะ
หากมีตัวเลขดังกล่าวหลายตัวจะทำให้เกิดความสับสนได้ง่ายยิ่งขึ้น
เขียน JavaScript ที่ชัดเจน: การกำหนดตัวเลขเป็นค่าคง
ที่จะช่วยแก้ปัญหานี้ได้อย่างชัดเจน:
const AGE_REQUIREMENT = 100;
const isOldEnough = (คน) => {
กลับ person.getAge() >= AGE_REQUIREMENT;
} ตอนนี้ การประกาศชื่อของค่าคงที่ทำให้เราเข้าใจได้ทันทีว่า 100 หมายถึง "ข้อกำหนดด้านอายุ" เมื่อแก้ไข คุณสามารถค้นหาได้อย่างรวดเร็ว แก้ไขในที่เดียว และมีผลในหลายที่
การส่งค่าบูลีนไปยังฟังก์ชันเนื่องจากพารามิเตอร์เป็นวิธีการเขียนทั่วไปที่ทำให้โค้ดสับสนได้ง่าย
const validateCreature = (สิ่งมีชีวิต isHuman) => {
ถ้า (คือมนุษย์) {
-
} อื่น {
-
-
} ค่าบูลีนที่ส่งผ่านไปยังฟังก์ชันเป็นพารามิเตอร์ไม่สามารถแสดงความหมายที่ชัดเจนได้ เพียงบอกผู้อ่านว่าฟังก์ชันนี้จะตัดสินและสร้างสถานการณ์ตั้งแต่สองสถานการณ์ขึ้นไป
อย่างไรก็ตาม เราสนับสนุนหลักการความรับผิดชอบเดียวสำหรับฟังก์ชันต่างๆ ดังนั้น:
เขียน JavaScript ที่สะอาด: หลีกเลี่ยงค่าบูลีนเป็นพารามิเตอร์ของฟังก์ชัน
const validatePerson = (person) => {
-
-
const validateCreature = (สิ่งมีชีวิต) => {
-
} เรามักจะเขียนโค้ดดังนี้:
if ( person.getAge() > 30 && person.getName() === "ไซมอน" && person.getOrigin() === "สวีเดน" - - }
ไม่ใช่เรื่องที่เป็นไปไม่ได้ แต่หลังจากผ่านไปนาน จู่ๆ คุณจะไม่เข้าใจว่าการตัดสินเหล่านี้มีไว้เพื่ออะไร ดังนั้นจึงขอแนะนำให้สรุปเงื่อนไขเหล่านี้ด้วยตัวแปรหรือฟังก์ชัน
เขียน JavaScript ที่สะอาด: แค็ปซูลหลายเงื่อนไข
const isSimon =
person.getAge() > 30 &&
person.getName() === "ไซมอน" &&
person.getOrigin() === "สวีเดน";
ถ้า (isSimon) {
-
} หรือ
const isSimon = (บุคคล) => {
กลับ (
person.getAge() > 30 &&
person.getName() === "ไซมอน" &&
person.getOrigin() === "สวีเดน"
-
-
ถ้า (isSimon (คน)) {
-
} โอ้ ปรากฎว่าเงื่อนไขเหล่านี้มีไว้เพื่อตัดสินว่าบุคคลนี้คือไซมอนหรือไม่ ~
โค้ดประเภทนี้เป็นโค้ดสไตล์ที่ประกาศ ซึ่งสามารถอ่านได้ง่ายกว่า
ในการตัดสินแบบมีเงื่อนไข การใช้วิจารณญาณเชิงลบจะทำให้เกิดภาระในการคิดเพิ่มเติม
ตัวอย่างเช่น ในโค้ดด้านล่าง เงื่อนไข !isCreatureNotHuman(creature) จะเป็นลบสองเท่า ซึ่งทำให้อ่านยากนิดหน่อย
const isCreatureNotHuman = (สิ่งมีชีวิต) => {
-
-
ถ้า (!isCreatureNotHuman (สิ่งมีชีวิต)) {
-
} เขียน JavaScript ที่สะอาดตา: หลีกเลี่ยงเงื่อนไขการตัดสินเชิงลบ
โดยการเขียนใหม่ลงในกฎการเขียนต่อไปนี้เพื่อให้อ่านง่ายขึ้น แม้ว่านี่จะเป็นเพียงเคล็ดลับเล็กๆ น้อยๆ แต่ในตรรกะของโค้ดจำนวนมาก แต่การปฏิบัติตามหลักการนี้ในหลาย ๆ ที่ก็จะมีผลอย่างมาก มีประโยชน์.
หลายครั้งที่อ่านโค้ดก็อ่านต่อ พอเห็นวิธีเขียนที่ "แย่" ก็ทนไม่ไหวแล้ว รายละเอียดต่างๆ จะถูกทับทับ และเขื่อนยาวพันไมล์ก็จะถล่มลงมาในรังมด
const isCreatureHuman = (สิ่งมีชีวิต) => {
-
-
ถ้า (isCreatureHuman (สิ่งมีชีวิต)) {
-
} ประเด็นนี้ถูกเน้นโดย Bengua มาโดยตลอด:
ตัวอย่างเช่น โค้ดต่อไปนี้:
if(x===a){
ละเอียด=ก
} อื่นถ้า(x===b){
ละเอียด=B
} อื่นถ้า(x===c){
ละเอียด=ค
} อื่นถ้า(x===d){
-
} เขียนใหม่เป็นแผนที่:
ให้ mapRes={
ก:ก,
BB,
ค:ค,
-
-
res=mapRes[x] อีกตัวอย่างหนึ่งคือโค้ดต่อไปนี้:
const isMammal = (creature) => {
ถ้า (สิ่งมีชีวิต === "มนุษย์") {
กลับเป็นจริง;
} อื่นถ้า (สิ่งมีชีวิต === "สุนัข") {
กลับเป็นจริง;
} อื่นถ้า (สิ่งมีชีวิต === "แมว") {
กลับเป็นจริง;
-
-
กลับเท็จ;
} เขียนใหม่เป็นอาร์เรย์:
const isMammal = (creature) => {
const สัตว์เลี้ยงลูกด้วยนม = ["มนุษย์", "สุนัข", "แมว", /* ... */];
กลับสัตว์เลี้ยงลูกด้วยนมรวม (สิ่งมีชีวิต);
} เขียน JavaScript ที่ชัดเจน: หลีกเลี่ยง if...else... จำนวนมาก
ดังนั้น เมื่อมี if...else... จำนวนมากในโค้ด ให้คิดอีกขั้นหนึ่งแล้วดูว่าคุณสามารถปรับเปลี่ยนเล็กน้อยได้หรือไม่ เพื่อให้โค้ดดู "สะอาด" มากขึ้น"
สรุป: เทคนิคข้างต้นอาจดูไม่คุ้มที่จะกล่าวถึงในตัวอย่างนี้ แต่ในโครงการจริง เมื่อตรรกะทางธุรกิจมีความซับซ้อนและมีจำนวนโค้ดมากขึ้น เคล็ดลับเหล่านี้จะให้ผลเชิงบวกและช่วยเหลือได้อย่างแน่นอน เกินกว่าจินตนาการ
ข้างต้นเป็นวิธีการเขียนโค้ด JS ที่สะอาด? มีการแบ่งปันเคล็ดลับการเขียน 5 ข้อโดยละเอียด สำหรับข้อมูลเพิ่มเติม โปรดอ่านบทความอื่น ๆ ที่เกี่ยวข้องบนเว็บไซต์ PHP Chinese!
