Fish Shell:
การปรับโครงสร้างโค้ด
วิธีการ:
จินตนาการว่าคุณมีสคริปต์ที่เติบโตขึ้นอย่างมากเวลาผ่านไป มันเริ่มต้นอย่างง่ายดาย แต่ตอนนี้มันกลายเป็นสัตว์ร้ายที่มีหนวดของตรรกะอย่างกว้างขวาง นี่คือตัวอย่างขนาดเล็กของการปรับโครงสร้างฟังก์ชันให้เป็นที่เข้าใจและมีประสิทธิภาพมากขึ้น:
ก่อนการปรับโครงสร้าง:
function old_and_clunky
set color (cat ~/.config/fish/color_theme)
if test "$color" = 'blue'
echo 'ตั้งค่าธีมสีน้ำเงิน!'
else if test "$color" = 'red'
echo 'ตั้งค่าธีมสีแดง!'
else
echo 'ตั้งค่าธีมเริ่มต้น!'
end
end
หลังการปรับโครงสร้าง:
function set_theme_color
set theme_color (cat ~/.config/fish/color_theme)
switch $theme_color
case blue
echo 'ตั้งค่าธีมสีน้ำเงิน!'
case red
echo 'ตั้งค่าธีมสีแดง!'
default
echo 'ตั้งค่าธีมเริ่มต้น!'
end
end
การปรับโครงสร้างช่วยปรับปรุงชื่อของฟังก์ชันให้ระบุเอกัติรรมได้ดีขึ้นและแทนที่โครงสร้าง if-else ด้วยคำสั่งswitch
ที่เรียบง่ายกว่า
ตัวอย่างผลลัพธ์:
ตั้งค่าธีมสีน้ำเงิน!
ศึกษาลึกลงไป
การปรับโครงสร้างถูกอธิบายอย่างละเอียดครั้งแรกในหนังสือเข้มข้นของ Martin Fowler ที่ชื่อ “Refactoring: Improving the Design of Existing Code” หนังสือนำเสนอวิธีการที่มีโครงสร้างในการปรับปรุงโค้ดโดยไม่ต้องเขียนฟังก์ชันใหม่ มากมายเทคนิคการปรับโครงสร้างได้ถูกนำเสนอตั้งแต่นั้นมา และแนวคิดนี้กลายเป็นส่วนสำคัญของการพัฒนาซอฟต์แวร์สมัยใหม่
ในสภาพแวดล้อม Fish Shell การปรับโครงสร้างอาจดูแตกต่างไปจากบริบทการเขียนโปรแกรมอื่นๆ เนื่องจากไวยากรณ์เฉพาะและลักษณะคำสั่งบนเส้นทางคำสั่ง ทางเลือกในการปรับโครงสร้างสคริปต์ใน Fish อาจรวมถึงการย้ายไปยังภาษา Shell อื่นหรือการใช้เครื่องมือภายนอกสำหรับการจัดการสคริปต์ขั้นสูง อย่างไรก็ตาม การรักษาไวยากรณ์ของ Fish เป็นแบบดั้งเดิมมักหมายถึงการบูรณาการที่ดีขึ้นกับคุณลักษณะของ shell และประสบการณ์ที่เรียบง่ายยิ่งขึ้นโดยรวม
เมื่อปรับโครงสร้างใน Fish Shell คุณจะต้องจัดการกับฟังก์ชันและคำสั่งมากกว่าคลาสหรือโมดูลที่มีขอบเขตกว้างในภาษาอื่น ๆ ความละเอียดนี้สามารถทำให้การปรับโครงสร้างเป็นกระบวนการที่เร่งด่วนและตรงไปตรงมามากขึ้น แต่ก็เน้นย้ำถึงความสำคัญของโค้ดที่ชัดเจน กระชับ และง่ายต่อการบำรุงรักษา
ดูเพิ่มเติม
- เว็บไซต์การปรับโครงสร้างของ Martin Fowler: https://refactoring.com/
- เอกสารประกอบการใช้งาน Fish Shell อย่างเป็นทางการ: https://fishshell.com/docs/current/index.html