Readability

พอดีได้ไปช่วย อจ. ศรัณย์ สอนน้องๆที่ลาดกระบังมา

แล้วสิ่งนึงที่สะดุดมากๆในการสอนคือ

“น้องๆกำลังเรียน วิชา principle of programming language

แต่น้องๆแต่ละคนเขียน code ไม่ถึง 500 บรรทัด”

จริงๆนะ สำหรับการเรียนภาษาทั่วไป (เช่น ไทย อังกฤษ จีน ..)

เราว่า จะรู้ว่า “ไพเราะ เพราะพริ้ง”  ของภาษาได้

ก็ต่อเมื่อเราเชี่ยวชาญภาษานั้นแล้ว

ซึ่งคำว่าเชี่ยวชาญ มันไม่ได้มาจากเขียน หรือใช้ภาษานั้น ไม่เกิน 500 บรรทัดหรอก

ดังนั้นการจะดื่มดำกับภาษาโปรแกรม ก็ไม่ต่างกัน

เราต้องฝึกจึงเข้าใจความงามของภาษา

ที่พูดว่า ภาษาโปรแกรม ไพเราะ เพราะพริ้ง ได้

มันไม่ใช่เรื่องโอเว่อร์เกินจริง อะไรนะ

อย่าคิดง่ายๆ แค่ว่า ภาษาโปรแกรม มันมีไว้แค่ให้คอมพิวเตอร์ทำงานตามที่เราต้องการ

เพราะถ้าคิดแบบนั้น เค้าควรตั้งชื่อว่า ชุดคำสั่งคอมพิวเตอร์

เพื่อจะให้มันแค่ทำงานตามที่เราต้องการ

แต่ถ้าเป็นคำว่า “ภาษา” มันต้องใช้สื่อสารระหว่าง คน กับคน

ซึ่งหมายถึง โปรแกรมเมอร์ กับ โปรแกรมเมอร์ ด้วยกันนั้นแหละ

และภาษา มันต้องน่าอ่านเสมอ

เมื่อภาษามันน่าอ่าน เราก็จะเห็นความไพเราะเพราะพริ้งของภาษา

เช่นเอาง่ายๆว่า เราเอาโจทย์ FizzBuzz มาเล่น

ถ้าเราเขียนเป็นวิธีเร็วๆ เขียนให้ไม่หน้าอ่าน

public String fizzbuzz(int input){

if (input % 15 == 0) return “FizzBuzz”;

else if (input%5 == 0) return “Buzz”;

else if (input%3 == 0) return “Fizz”;

else return input.toString();

}

จะเขียนแบบนี้ก็ได้ แต่ความไพเราะอยู่ตรงไหน…

ลองดูแบบนี้มั้ย

public String fizzbuzz(int input) {

if canModuloBy(input,15) return “FizzBuzz”;

else if canModuloBy(input, 5) return “Buzz”;

else if canModuloBy(input, 3) return “Fizz”;

else return input.toString;

}

private canModulo(input, modulo){

return (input% modulo == 0)

}
จะเห็นว่าความงามในการอ่าน public method  มีมากขึ้น

และความสับสนใน code มีน้อยลง

code แบบแรก เราจะให้เห็นเลยว่า มัน describe อะไรให้โจทย์ FizzBuzz

แต่ code แบบหลัง กับการตั้งชื่อตัวแปล เราจะเห็นเลยว่า มัน describe ว่า

โจทย์ FizzBuzz คือการหาว่าตัวที่รับเข้ามา modulo ด้วย 15,5,3 แล้วได้ “FizzBuzz”, “Buzz”, “Fizz”

เราชอบนิยามการเขียนโปรแกรมที่ ไพเราะเพราะพริ้ง ว่า

มันคือการ capture วิธีการที่ธุรกิจนั้นๆ ประมวลผลข้อมูลมาอยู่ใน code

เพราะ code ที่เราเขียนให้ธุรกิจ มันไม่ได้อยู่แค่ 3-5 ปี

แต่ code พวกนี้มันอยู่ 10 – 20 ปี ถ้าไม่เชื่อลองดู Facebook หรือ Google สิ

ยังมีรูปแบบเหมือนเดิม มา 10 -20 ปีเลย

สวัสดีครับ

About champillon

Enterprise Opensource Implementer
This entry was posted in Software Engineering. Bookmark the permalink.

Leave a comment