guard trong Swift
Bài viết giải thích cách sử dụng câu lệnh guard trong Swift, một cách tiếp cận khác với if let để xử lý Optional Binding. Tác giả trình bày cú pháp, ví dụ thực tế và lợi ích của guard trong việc làm code sạch hơn và dễ đọc hơn khi xử lý các điều kiện đầu vào.

Guard trong Swift là gì?
Ở bài trước, ta đã tìm hiểu về kiểu Optional trong Swift. Ngoài sử dụng if let cho Optional Binding, ta cũng có thể dùng guard.
Syntax đầy đủ khi dùng guard:
guard else { return }```
Câu 'thần chú' của mình để cho dễ hiểu là:
đảm bảo rằng nếu không thì ```{ return }```
## Ví dụ nếu không dùng guard
Mình có 2 UITextField như sau:
@IBOutlet weak var usernameTF: UITextField! @IBOutlet weak var passwordTF: UITextField!
Khi lấy giá trị của UITextfield bằng cách usernameTF.text thì sẽ trả về kiểu Optional:

Chúng ta cần kiểu tra xem user có nhập đúng kiểu dữ liệu của username và password không, nếu dùng i **f let** thì phải làm như sau:
https://gist.github.com/KhoaVanNguyen/be34e0db7d7bb21a892ddefab2d46032
Bạn sẽ thấy vấn đề là các câu if bị lồng vào nhau rất khó nhìn. Nếu cần phải check khoảng 4 cái control từ user thì càng khó nhìn hơn nữa. Việc validation sẽ dễ dàng hơn với guard như sau.
## Ví dụ dùng guard
https://gist.github.com/KhoaVanNguyen/4f3ae1ae7003df85c26c1fdb3cdb71e8
Bạn sẽ thấy code nhìn dễ nhìn hơn nhiều và đúng với [code style early return](https://softwareengineering.stackexchange.com/questions/18454/should-i-return-from-a-function-early-or-use-an-if-statement) hơn.
Ngoài ra, bạn có thể tách riêng phần validation code để tiện cho việc unit testing và xử lý logic hơn. Ví dụ bạn cần check username xem có trùng hay không và username phải có trên 6 ký tự và username phải có ít nhất một số.
https://gist.github.com/KhoaVanNguyen/b5a0b12e6bb71f90fd96c869865eb23e
Dưới đây là một ví dụ thực tế mình dùng guard để validate các điều kiện, nếu mà dùng if sẽ cực kỳ rối mắt.
https://gist.github.com/KhoaVanNguyen/702905c91af40ee4ecd0ceda426f0fbb
## Kết
Mặc dù ý tưởng dùng guard không có gì mới, nhưng việc thêm từ khóa này trong Swift cũng một phần làm ngôn ngữ này trở nên [gần gũi với người lập trình hơn](https://niviki.com/tuong-lai-nao-cho-swift/). Khi dùng guard bạn hãy nhớ câu: " **Đảm bảo rằng ..... nếu không thì .....** ". Đây là một trong những lý do mình thích Swift vì viết code như viết tiếng Anh.
Bài viết là tài liệu đọc thêm cho [khóa học iOS với Swift](https://niviki.com/chuan-bi-khoa-hoc-moi-ios-voi-swift/), bạn có thể đọc thêm nếu quan tâm.
Related Posts
Discover more content you might enjoy

Game Theory trong thời đại AI: Khi máy móc tham gia vào "trò chơi"
Bài viết phân tích sự giao thoa giữa lý thuyết trò chơi (Game Theory) và trí tuệ nhân tạo, giải thích cách AI đang thay đổi các nguyên lý cân bằng Nash và chiến lược tối ưu. Tác giả đưa ra các ví dụ thực tế về ứng dụng trong kinh doanh, giao thông và an ninh mạng.

Bài này không phải AI viết
Suy ngẫm chân thành về giá trị của việc viết thủ công trong kỷ nguyên AI. Dù AI có thể tạo nội dung hiệu quả, bài viết này là lời khẳng định về sự kết nối cá nhân và giá trị độc đáo mà con người mang lại cho văn bản của mình.

Dự đoán về Vibe Coding: Cách AI sẽ biến đổi việc tạo ra phần mềm
Bài viết phân tích cách 'vibe coding' - phương pháp lập trình dựa trên mô tả ý định thay vì viết code trực tiếp - sẽ dân chủ hóa việc phát triển phần mềm. Tác giả dự đoán về sự chuyển đổi từ giao diện dòng lệnh sang thiết kế trực quan, sự xuất hiện của phần mềm tự cải thiện, và tác động đến cấu trúc tổ chức công ty cũng như các thị trường ngách chưa được khai thác.

Dùng AI để hỗ trợ đầu tư crypto
Bài viết chia sẻ 7 mẹo thực tế để sử dụng AI (như Claude.ai và ChatGPT) hỗ trợ hiểu rõ whitepaper và tài liệu kỹ thuật của các dự án blockchain. Từ việc yêu cầu tóm tắt đơn giản, giải thích như cho trẻ em, đặt câu hỏi làm rõ, sử dụng ví dụ, tạo tình huống giả định, chuyển đổi thuật ngữ, đến so sánh nhiều nguồn tài liệu - giúp nhà đầu tư đưa ra quyết định đầu tư crypto sáng suốt hơn.
Sinh viên có nên khởi nghiệp?
Bài viết phân tích những lợi thế và bất lợi khi sinh viên khởi nghiệp dựa trên bài 'A Student's Guide to Startups' của Paul Graham. Tác giả chỉ ra năm lợi thế của sinh viên khi khởi nghiệp: sức khỏe dồi dào, không áp lực tài chính, không vướng bận gia đình, dễ tìm đồng sáng lập từ trường học, và sự ngây thơ giúp dám thử thách. Đồng thời, bài viết cũng cảnh báo về bất lợi khi sinh viên khởi nghiệp như thiếu khả năng giải quyết bài toán thực tế và thiếu kiến thức đa ngành.

Niềm tin
Bài viết bàn về vai trò của niềm tin trong cuộc sống và cách nó ảnh hưởng đến hành động của chúng ta, giúp chúng ta dám bắt đầu và vượt qua thử thách.