Screen Shot 2558-10-02 at 12.56.20 PM
ในการเรียนรู้ภาษาใหม่ ๆ หนึ่งในวิธีการคือ การฝึกฝน
และการฝึกฝนที่ถูกต้อง จะส่งผลได้ผลลัพธ์ออกมาดี
หนึ่งในแนวคิด และ วิธีการที่ดี คือ TDD (Test-Driven Development)

ดังนั้นเมื่อเราต้องการศึกษาภาษา Swift
มาเริ่มด้วย TDD กันดีกว่า
นั่นคือ สอนให้เราคิด ก่อน ทำ
และเรียนรู้จากข้อผิดพลาดนั่นเอง

เริ่มต้นด้วยการสร้าง project ใน Xcode ก่อนนะ

โดยที่ software ที่ใช้คือ XCode 7.1 beta 2 ซึ่งมีภาษา Swift 2.1 มาให้ด้วย
ดังนั้นสร้าง project และเลือก Unit test ด้วยดังรูป

Screen Shot 2558-10-02 at 8.43.46 AM

จากนั้นเราจะเข้าสู่วงจรของ TDD กันแล้ว
นั่นคือ Red-Green-Refactor ดังรูป

tdd-red-green-refactor-diagram

1. ต้องเริ่มด้วยการคิดก่อนว่า เราจะสร้างอะไร ? (Think)

จากตัวอย่างต้องการสร้าง class สำหรับเก็บข้อมูลพนักงาน (Employee)
ประกอบไปด้วย รหัส และ ชื่อ
ดังนั้น เริ่มด้วยการเขียน unit test สิครับ

แน่นอนว่า code ชุดนี้ compile ไม่ผ่าน
เพราะว่า class Employee มันไม่เคยมีมาก่อน

การเขียน unit test ในภาษา Swift จะใช้ XCTest นะครับ

สถานะ คือ RED

2. ทำการสร้าง class Employee ขึ้นมา ตามที่ออกแบบใน test สิ รออะไร !!

สังเกตไหมว่า
เราสร้างเท่าที่ test บอกเท่านั้น
และเพียงเพื่อให้ test มัน compile ผ่านเท่านั้น

สถานะ คือ GREEN

3. จากนั้น ถ้าต้องการเพิ่มส่วนการทำงานของ Employee จะต้องเขียนเพิ่มใน test เสมอ

นั่นคือ เราต้องคิดว่าจะทำอะไรบ้าง ?
เช่น ต้องการให้ class Employee ทำการส่งข้อมูลกลับมาในรูปแบบ Dictionary
เราสามารถคิด และ ออกแบบใน test ได้ดังนี้

แน่นอนว่า code ชุดนี้ compile ไม่ผ่านอย่างแน่นอน
เพราะว่า class Employee มันไม่มี function/method asDictionary()

สถานะ คือ RED

4. ทำการสร้าง function asDictionary() สิ

อย่าลืมนะว่า เขียน code เพียงให้ test ผ่านเท่านั้น

สถานะ คือ GREEN

5. สิ่งที่ขาดหายไป คือ การตรวจสอบผลการทำงานนั่นเอง (Assertion)

โดยจะทำการตรวจผลลัพธ์จาก function asDictionary()
ต้องได้ผลลัพธ์ตามที่กำหนดไป ดังนี้

สถานะ คือ RED

6. ทำการแก้ไข code ใน class Employee เพื่อให้ function asDictionary() ทำงานตามที่ต้องการ

สังเกตไหมว่า
code ที่สร้างขึ้นมา ทำการ hard code ล้วน ๆ !!
ซึ่งมันไม่ดีเลยใช่ไหม ?
แก้ไขอย่างไรดีล่ะ ?

สถานะ คือ GREEN

7. ทำการลบส่วน hard code ด้วยการเพิ่ม test case ใหม่เข้าไปสิ

แน่นอนว่า test case ใหม่นี้มันไม่ผ่านอย่างแน่นอน

สถานะ คือ RED

8. อย่ารอช้า !!! ทำการแก้ไข class Employee ซะ

สถานะ คือ GREEN

นี่คือการเริ่มต้นเพื่อฝึกฝนภาษาใหม่ ๆ ด้วย TDD ครับ

ลองมาฝึกกันนะ
ค่อย ๆ เดินทีละก้าว
ค่อย ๆ ฝึกไปทีละนิด
แล้วจะพัฒนาระบบได้เร็ว และ ดี เองครับ

ตัวอย่าง code ทั้งหมดอยู่ที่ Github:Up1::TDDSwift

Tags:,