Ebook Studio

คู่มือ Ruby TDD

คู่มือ Ruby TDD

คู่มือ Ruby TDD

ผมเขียนคู่มือนี้เผื่อคนที่ใช้ repo นี้เป็นคอร์ส โดยเฉพาะคนที่มาจาก Java แต่ผมก็ไม่ได้ อยากให้ชื่อไฟล์นี้กันคนอื่นออกไป ถ้าคุณมาจากภาษาอื่น คุณก็ยังใช้คอร์สนี้ได้ดี ผมยก Java มาเป็นจุดเทียบ เพราะมันช่วยให้ผมอธิบายบางไอเดียของ Ruby ได้ชัดขึ้น

repo ฉบับเต็มตอนนี้มี 15 หัวข้อ 2 ภาคผนวก ชุดทดสอบรายหัวข้อที่รันได้จริง และไฟล์ คำตอบที่แยกออกจากลำดับปกติของแบบฝึกหัด นั่นทำให้ผมสอน Ruby ที่นี่เป็นเส้นทางการ เรียนเต็ม ๆ ได้ แทนที่จะเป็น workshop สั้น ๆ

ฉบับภาษาไทยใน /th ตอนนี้ครอบคลุมเอกสาร Markdown ทั้งคอร์สแล้ว ส่วนไฟล์ Ruby และชุดทดสอบที่รันได้จริงยังอยู่ฝั่ง en/ เหมือนเดิม เพื่อให้การเรียนกับการรันโค้ดใช้ ฐานเดียวกันทั้ง repo

ทำไมผมจึงเขียนคู่มือนี้แบบนี้

ผมไม่ได้กำลังสอนแค่ไวยากรณ์ของ Ruby ผมกำลังชวนคุณดูว่าโค้ด Ruby ค่อย ๆ ถูกหล่อ ขึ้นมาอย่างไร ชุดทดสอบช่วยบีบให้มันชัดขึ้นอย่างไร และนิสัยเดิมของคุณอาจต้องขยับตรงไหน เมื่อปัญหาเริ่มเป็น Ruby มากขึ้น

ถ้าคุณอยากได้ภาพรวมสั้นที่สุด ให้เริ่มที่ README.md ถ้าคุณอยากเห็นแผนที่ ของคอร์ส ให้ไปที่ course_overview.md ผมเขียนคู่มือนี้ไว้ตรงกลาง ระหว่างสองไฟล์นั้น เพื่ออธิบายว่าผมอยากให้คุณเดินผ่าน repo นี้อย่างไร และการปรับวิธีคิด ช่วงไหนสำคัญที่สุดระหว่างทาง

ตอนผมเขียนคู่มือนี้ ผมตั้งสมมติฐานว่า

คู่มือนี้ไม่ได้สมมติว่าคุณเคยเขียน Ruby มาก่อน

ถ้าคุณเคยใช้ภาษาแบบ dynamic อื่นมาก่อน ไวยากรณ์บางส่วนอาจคุ้นตา แต่คำถามด้านการ ออกแบบก็ยังสำคัญอยู่ดี

ใน repo นี้มีอะไรอยู่จริงบ้าง

ไฟล์ Ruby และชุดทดสอบที่รันได้จริงของคอร์สอยู่ใต้ en/ และมี 15 หัวข้อ ส่วนเอกสาร Markdown ภาษาไทยของทั้งคอร์สอยู่ใต้ th/ :

นอกจากนี้ยังมี 2 ภาคผนวก:

แต่ละหัวข้อใช้โครงสร้างหลักชุดเดียวกัน:

ความสม่ำเสมอนี้สำคัญกับผมมาก ผมไม่อยากให้คุณเสียแรงไปกับการเดาโครงสร้างใหม่ทุก ครั้งที่เปลี่ยนหัวข้อ ผมอยากให้คุณเอาแรงนั้นไปใช้กับโค้ดแทน

วิธีรันคอร์ส

จาก en/ ให้รันคอร์สเต็มแบบนี้:

./ run_tests . sh ruby_tdd_guide_for_java_developers.md bash รันหัวข้อเดียวจากรากคอร์ส:

./ run_tests . sh topic_01_ruby_basics ruby_tdd_guide_for_java_developers.md bash หรือจะรันผ่านสคริปต์ของหัวข้อนั้นเอง:

./ topic_01_ruby_basics / run_topic_tests . sh ruby_tdd_guide_for_java_developers.md bash สคริปต์รันหลักจะตรวจ gems ที่คอร์สต้องใช้และติดตั้งให้ถ้ายังไม่มี ตอนนี้รวมถึง erb , csv , sqlite3 และ rspec

พอคุณไปถึง CSV กับ SQLite คุณจะไม่ได้กำลังเรียนแค่ฟีเจอร์ของภาษาแล้ว แต่กำลังเห็น โครงของ Ruby project ขนาดเล็กด้วย ผมจึงอยากให้เครื่องมือรอบ ๆ ง่ายพอที่คำถามด้าน การออกแบบจะยังเด่นอยู่

วิธีที่ผมแนะนำให้คุณเรียนหนึ่งหัวข้อ