Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Kotlin là ngôn ngữ được khuyến nghị cho phát triển Android hiện nay. Cú pháp gọn, an toàn và dễ đọc hơn Java rất nhiều. Bài viết điểm qua những tính năng cốt lõi bạn nên nắm trước khi viết ứng dụng thực tế.
val là biến chỉ gán một lần, var là biến có thể thay đổi. Hãy ưu tiên val để code dễ suy luận hơn. Kotlin tự suy luận kiểu nên bạn thường không cần khai báo kiểu.
val name = "Bem" // String, không đổi
var score = 0 // Int, có thể đổi
score += 10
val pi: Double = 3.14 // khai báo kiểu rõ ràng khi cần
Đây là điểm khác biệt lớn nhất so với Java. Kiểu mặc định không thể null; muốn cho phép null phải thêm dấu hỏi.
var email: String? = null
println(email?.length) // null nếu email là null
val len = email?.length ?: 0 // giá trị mặc định bằng toán tử Elvis
email?.let { println("Email: $it") } // chỉ chạy khi không null
Hạn chế dùng toán tử !! vì nó ném lỗi khi gặp null, làm mất ý nghĩa của null safety.
fun greet(name: String, greeting: String = "Xin chào"): String {
return "$greeting, $name!"
}
fun square(x: Int) = x * x // hàm một biểu thức
greet("An") // dùng tham số mặc định
greet(greeting = "Chào", name = "Bình") // tham số có tên
Khi cần một lớp chỉ để chứa dữ liệu, data class tự sinh equals, hashCode, toString và copy:
data class User(val id: Int, val name: String, val age: Int)
val u1 = User(1, "Lan", 22)
val u2 = u1.copy(age = 23)
println(u2) // User(id=1, name=Lan, age=23)
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evenSquares = numbers
.filter { it % 2 == 0 }
.map { it * it }
println(evenSquares) // [4, 16, 36]
Các hàm filter, map, sortedBy, groupBy giúp xử lý danh sách gọn gàng thay cho vòng lặp dài dòng.
fun describe(code: Int): String = when (code) {
200 -> "Thành công"
404 -> "Không tìm thấy"
in 500..599 -> "Lỗi máy chủ"
else -> "Không xác định"
}
Bạn có thể thêm hàm cho kiểu có sẵn mà không cần kế thừa:
fun String.isValidEmail(): Boolean =
contains("@") && contains(".")
println("a@b.com".isValidEmail())
Đây chỉ là kiểm tra đơn giản để minh họa, ứng dụng thật nên dùng bộ kiểm tra chuẩn hơn.
Trong Android, gọi mạng hay đọc cơ sở dữ liệu không được chặn luồng giao diện. Coroutines cho phép viết code bất đồng bộ trông như code tuần tự.
viewModelScope.launch {
val result = withContext(Dispatchers.IO) {
repository.loadUsers()
}
_users.value = result
}
Hàm có thể tạm dừng được đánh dấu suspend, và chỉ gọi được từ coroutine hoặc từ một hàm suspend khác.
Chỉ cần vững val và var, null safety, data class, lambda với collection và coroutines là bạn đã đọc hiểu được phần lớn code Android hiện đại. Hãy áp dụng ngay vào một ứng dụng nhỏ để kiến thức ngấm sâu.
Kotlin cho phép viết rất ngắn, nhưng ngắn chưa chắc dễ đọc. Hãy ưu tiên đặt tên rõ nghĩa và tránh chuỗi lệnh quá dài trên một dòng. Dùng val thay cho var, dùng danh sách bất biến (List) thay cho MutableList khi không cần sửa, và chỉ chia sẻ dạng bất biến ra bên ngoài lớp. Khi một hàm có nhiều tham số cùng kiểu, hãy dùng tham số có tên để lời gọi tự giải thích.
Về kiểm soát lỗi, tránh bắt Exception chung chung và nuốt im lặng; hãy bắt đúng loại lỗi và xử lý có ý nghĩa. Dùng sealed class để biểu diễn tập kết quả hữu hạn như Thành công, Lỗi, Đang tải, trình biên dịch sẽ nhắc bạn xử lý đủ mọi nhánh trong when. Cuối cùng, bật các cảnh báo của trình biên dịch và công cụ phân tích mã tĩnh để học dần phong cách Kotlin chuẩn từ chính các gợi ý của chúng.
Sau phần cú pháp, hãy đọc hướng dẫn chính thức của Kotlin và các bài Android Basics của Google. Làm các bài thực hành trên Kotlin Playground giúp bạn quen dần mà không cần cài đặt phức tạp.
Nếu muốn có người dẫn dắt từ cú pháp đến ứng dụng Android hoàn chỉnh, bạn có thể tìm khóa học tại codebem.com.
Nguyễn Đình Cường
0 comment