# รหัสแห่งความสะอาด: หลักการเขียน Function ตามทัศนะของ Robert C. Martin
เมื่อพูดถึงการเขียนโค้ดให้มีคุณภาพและคงทนต่อการใช้งานในระยะยาว หนึ่งในแนวคิดที่มักจะถูกนำมาพูดถึงคือ "Clean Code" หรือรหัสที่สะอาด ตามที่ Robert C. Martin หรือ Uncle Bob ได้ระบุไว้ในหนังสือชื่อดังของเขา ในบทความนี้ เราจะได้พิจารณาหลักการของ Uncle Bob ในด้านการเขียน Function ซึ่งเป็นหน่วยย่อยของโค้ดที่สำคัญรายการหนึ่งที่นักพัฒนาต้องให้ความสำคัญในการออกแบบและพัฒนา
หลักการที่ Uncle Bob ได้เน้นย้ำคือ "Function ควรมีขนาดเล็ก" มันไม่ได้แค่ช่วยให้รหัสอ่านง่ายขึ้นเท่านั้น แต่ยังลดความซับซ้อนและช่วยให้การทดสอบโค้ดได้ง่ายขึ้นด้วย คำถามคือ "เล็กแค่ไหน?" Uncle Bob แนะนำว่าหาก Function สามารถจบได้ไม่เกิน 20 บรรทัด, นั่นเป็นขนาดที่เหมาะสม
Function ควรทำหนึ่งอย่างและทำอย่างนั้นให้ดีที่สุด ความหมายคือ Function ไม่ควรผสมผสานหลายหน้าที่เข้าด้วยกัน การแบ่งหน้าที่ออกจากกัน ทำให้โค้ดแต่ละส่วนสามารถนำมาซึ่งกับการใช้งานเฉพาะด้านได้ง่ายขึ้น ตัวอย่างเช่น:
// ตัวอย่าง function ที่ทำหนึ่งอย่าง
public double calculateTotalSum(Order order) {
return order.getItems().stream().mapToDouble(Item::getPrice).sum();
}
Uncle Bob แนะนำว่า Function ควรมีระดับของ abstraction เดียวกัน เพื่อไม่ทำให้ผู้อ่านสับสน หาก Function ทำการเรียกใช้งาน Function อื่น ๆ ทุก Function นั้นควรเป็นระดับหนึ่งเดียวกัน อย่างเช่น การใช้ loop หรือ statement อื่น ๆ ในระดับที่ต่ำกว่า
รหัสที่สะอาดนั้นเริ่มต้นจากการตั้งชื่อที่มีความหมาย ชื่อ Function ควรสะท้อนหน้าที่ที่แท้จริงของมัน และควรเลือกคำที่อ่านและเข้าใจได้ง่าย เหมือนกับเรากำลังเล่าเรื่องผ่านโค้ด
# ตัวอย่างชื่อ function ที่ชัดเจน
def send_welcome_email(user):
# ...
หลักการที่ได้รับความชื่นชอบคือ "การมีจำนวนพารามิเตอร์น้อยๆ ใน Function" หลักการนี้ช่วยให้การทดสอบและการใช้งาน Function นั้นๆ ทำได้ง่ายขึ้น และลดความจำเป็นในการทำความเข้าใจ context มากมาย หากต้องการให้ Function รับพารามิเตอร์หรือส่งข้อมูลหลายตัว ควรพิจารณาสร้าง class หรือ structure เพื่อกำหนดเป็นหน่วยข้อมูลรวม
# ตัวอย่างการจำกัดอาร์กิวเม้นต์
def create_menu(title, body, button_text, cancellable):
# ...
# ดีกว่า
def create_menu(menu_config):
# ...
Clean Code แนะนำให้ทำการจัดการกับ error อย่างแยกออกจาก business logic สิ่งนี้ช่วยให้โค้ดไม่ซับซ้อนและคุณสามารถจัดการกับ exception ในตำแหน่งเฉพาะที่
// ตัวอย่างการจัดการข้อผิดพลาดอย่างมุ่งเน้น
try {
File file = new File(filePath);
// โค้ดที่เกี่ยวข้องกับไฟล์
} catch (IOException e) {
// จัดการข้อผิดพลาด
}
การเขียน Function อย่างสะอาดไม่ได้เป็นเพียงแค่เทคนิค แต่เป็นวิธีคิดในการออกแบบโค้ดของเราให้เป็นระเบียบ คงทน และยืดหยุ่นต่อการเปลี่ยนแปลง การคำนึงถึงหลักการเหล่านี้เมื่อเขียน Function สามารถนำไปสู่คุณภาพของโค้ดที่ดีขึ้น นักพัฒนาที่ต้องการหักห้ามสิ่งเหล่านี้อย่างจริงจัง สามารถพิจารณาเรียนรู้และฝึกฝนอย่างจริงจัง ซึ่งที่ EPT เรามีหลักสูตรการเรียนการสอนที่พร้อมจะสนับสนุนและพัฒนาทักษะให้กับคุณ เพื่อให้คุณสามารถเขียนโค้ดที่มีคุณภาพและสะอาดตามหลักการของ Uncle Bob ได้.
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM