3. แล้วมันไล่ไปหา unit testing ได้ง่ายด้วยนะ .... แบบนี้เราก็จะมี test case สำหรับ sum2 และ average2 น่ะแหละ แต่เพราะว่า average2 มันใช้ sum2 เพราะฉะนั้นถ้า sum2 มันถูก (และถูกทดสอบ) และเราเอามันไปใช้อย่างถูกต้องใน average2 ..... มันก็จะถูกไปเอง ... ถ้า sum2 มันผิด เราก็จะแก้ที่เดียว แล้ว average2 มันก็ถูกไปเอง
4. สอน if-else หลังจาก function นี่ทำให้สอนโดยใช้ function ได้ .... ว่ามันเป็น function ที่รับ boolean และ function อีก 2 ตัว .... ถ้า boolean เป็นจริง มันจะเรียก function แรกทำงาน ถ้าเป็นเท็จ มันจะเรียก function สองทำงาน ..... มัน lead ไปหา function returns function ในอนาคตง่ายๆ เลย (เจอ lambda เจออะไรพวกนี้ เจอ higher-order function จะงงน้อยลง .... เพราะเราคุ้นเคยกับมันอยู่แล้ว)
5. แถมหน่อย .... ในภาษา industrial strength เก่าๆ ที่ไม่มี type inference ... การเขียนฟังก์ชั่นมันยากกว่าการสอน if-else, loop เยอะ เพราะ syntax มัน bloat และต้องรู้อะไรเยอะเกินไป ... อันนั้นเข้าใจได้ ... แต่ปัจจุบันนี้มันแทบไม่ต้องรู้อะไรเลยมากกว่าเรื่องตัวแปรเลย syntax มันง่ายซะจนกลายเป็นว่า if-else, loop นี่ยากกว่าซะอีก 😛
=========================
จบวัน ที่ให้เขียน max2(a, b) และให้เขียน max4(a, b, c, d) .... เป็นแบบทดสอบประจำวัน
ทุกคนที่เรียน เขียน max4 แบบสวยๆ บรรทัดเดียวได้เลย ... ใช้ max2(max2(a, b), max2(c, d)) น่ะแหละ (ก็ใบ้ไปนิดอ่ะนะ ว่าคิดแบบการแข่งกีฬา จากรอบรองไปรองชิง)
เนี่ย ถ้าเราเขียน max2 ถูก (และทดสอบแล้วว่าถูก) .... แล้วเราเอามาประกอบเป็น max4 ถูก ..... max4 จะถูกโดยปริยาย ไม่ต้องมี low-level logic อะไรที่ให้มันผิดซ้ำผิดซ้อนเลย และเป็นการฝึกแตกปัญหาใหญ่ที่ยาก เป็นปัญหาย่อยที่ง่าย และเราเคยแก้ได้แล้ว อีกด้วย
นี่เป็นผลจากการให้ใช้ฟังก์ชั่นเร็ว คนจะใช้ฟังก์ชั่นและคิดใน functional terms ไม่ใช่ไป fidgeting กับสารพัด if-else ที่จะทำให้ max4 ซับซ้อน ....
ครึ่งวัน กับคนไม่เคยเขียนโค้ดเลย ได้งี้ก็แจ่มแล้ว 🙂 .... เดี๋ยวต่ออังคารหน้า ยังไม่บอกว่าอะไร (แต่ไม่ใช่ loop แน่ๆ 555)
ใครอยากให้ไปช่วยสอน non-tech staffs บ้างครับ 😃