# Refactor

## Refactor กันหน่อย

**ViewController** ถ้าเห็นแล้วก็คงจะ งง ไม่รู้ว่ามันคือหน้าแสดง List todo ของเรา มาแก้ชื่อกันหน่อย

**คลิ๊กขวาที่ชื่อคลาส เลือก Refactor -> Rename** จากนั้น Xcode จะหาให้เราว่ามีที่ไหนใช้บ้าง แล้วแก้ทีเดียวเป็น **TodoListViewController** (จะเห็นว่ามีใช้ใน Storyboard ด้วย)

![Rename ViewController to TodoListViewController](https://1168329629-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGk7Utff0rVWsqK4eYO%2F-LHMZOBCqzOiR4395GRJ%2F-LHMc2Jz2orKheEgXSh1%2Frename3.gif?alt=media\&token=c7fd74f9-0686-468e-b3af-9d77ef583a32)

จากนั้นให้เราทำแบบเดียวกับ **AddNewItemViewController** เพราะตอนนี้มันไม่ได้ Add อย่างเดียวแล้วนะ เป็น **ItemDetailViewController**

ตามมาด้วย Protocol ของเรา **AddNewItemViewControllerDelegate** เป็น **ItemDetailViewControllerDelegate**

**อย่าลืมชื่อฟังก์ชั่นใน Protocol ด้วยนะ แล้วเราก็จะได้แบบนี้**

```swift
protocol ItemDetailViewControllerDelegate: class {
    func itemViewController(controller: ItemDetailViewController, didAdd item: TodoItem)
    func itemViewController(controller: ItemDetailViewController, didEdit item: TodoItem)
    func itemViewControllerDidCancel(controller: ItemDetailViewController)
}
```

## จัด structure ไฟล์กันหน่อย

จากนั้นเราก็มาจัดให้มันเป็นกลุ่ม ๆ กันหน่อยจะได้หาง่าย

![](https://1168329629-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGk7Utff0rVWsqK4eYO%2F-LHMfYJnp3sz6pglrE8s%2F-LHMg7F3ge214EhJeHXT%2FScreen%20Shot%202018-07-14%20at%2014.26.26.png?alt=media\&token=202be216-27c7-4e72-a334-f6b75ef04abc)

พอเราจัดเสร็จ ถ้าเราย้าย info.plist ไปอยู่ในโฟลเดอร์ ทีนี้จะ Build ไม่ผ่าน ให้เราตามไปแก้คอนฟิกเราด้วยที่ Build Settings ให้ search ว่า info.plist แล้วเปลี่ยน path ใหม่

![เปลี่ยน path ให้ info.plist](https://1168329629-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGk7Utff0rVWsqK4eYO%2F-LHMfYJnp3sz6pglrE8s%2F-LHMgAjnfjn-DeVs05x0%2FScreen%20Shot%202018-07-14%20at%2014.26.18.png?alt=media\&token=053b56b1-eb8c-4a70-b3b1-7e654c333106)

## จัด section ให้โค้ดของเราหน่อย

เวลา controller หรือ class ของเรามันใหญ่ขึ้นการหาฟังก์ชั่นหรือของต่าง ๆ ก็จะยากไปด้วย เราสามารถจัดกลุ่มในโค้ดของเราได้ด้วยการใส่

```swift
//MARK: - Group name
```

จะทำให้เราสามารถหาของได้ง่ายขึ้น

![จัดกลุ่มในโค้ดเป็นเรื่อง ๆ](https://1168329629-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGk7Utff0rVWsqK4eYO%2F-LHNNzRbrwEc-FiKpa5_%2F-LHNOz50VuwallFnnP6J%2Fmark.gif?alt=media\&token=deac05e7-70c0-4d09-bd9d-e7921b009442)
