12/08/2018, 16:07

Một vài tính năng thú vị của Kotlin

Chúng ta đã thấy rằng Kotlin không chỉ giúp chúng ta viết code “đẹp” mà còn giúp chúng ta thấy thích viết code hơn khi sử dụng ngôn ngữ này. Hai điều này sẽ đảm bảo cho chúng ta ra đời những app chất lượng hơn. Sau đây mình xin chia sẻ một vài tính năng đặc trưng của ngôn ngữ này để lí ...

Chúng ta đã thấy rằng Kotlin không chỉ giúp chúng ta viết code “đẹp” mà còn giúp chúng ta thấy thích viết code hơn khi sử dụng ngôn ngữ này. Hai điều này sẽ đảm bảo cho chúng ta ra đời những app chất lượng hơn. Sau đây mình xin chia sẻ một vài tính năng đặc trưng của ngôn ngữ này để lí giải vì sao kotlin hiện giờ đang được mọi người yêu thích như vậy.

1. Thay thế blocks if/else if/else bằng when

Sau đây là ví dụ để so sánh:

// Java
if (firstName.equals("Dan")) {
    person.setTeam(programmers);
} else if (lastName.equals("Dihiansan")) {
    person.setTeam(designers);
} else {
    person.setTeam(others);
}
// Kotlin
person.team = when {
  firstName == “Dan”      -> programmers
  lastName == “Dihiansan” -> designers
  else                    -> others
}

Hai block này đều xử lí một lệnh giống nhau nhưng hay nhìn xem bên nào dể đọc và ngắn gọn hơn. Nếu như ta xử lí check một argument với nhiều trường hợp, thông thường ta sẽ dùng một switch/case statement dài dòng và “xấu xí”.

// Java
switch (firstName) {
    case "Dan": person.setTeam(programmers)
        break;
    case "Jay": person.setTeam(programmers)
        break;
    case "Jamie": person.setTeam(designers)
        break;
    default:
        person.setTeam(others)
}
// Kotlin
person.team = when {
  firstName == “Dan”      -> programmers
  lastName == “Dihiansan” -> designers
  else                    -> others
}

Với kotlin có vẻ dễ dàng cho người đọc hơn rất nhiều.

2. Viết hàm onClick ngắn gọn

Với “Anko”, một thư viện viết cho Kotlin, click listener được viết rất ngắn gọn và dễ dàng.

// Java
view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        System.out.println("This is horrible");
    }
});
// Kotlin
view.onClick {
    println("WAT")
}

3. Không còn viewbinding

Sử dụng kotlin android extension, bạn không cần phải bind views sang object để xử lí chúng. Với kotlin bạn có thể truy cập thẳng đến view đó luôn.

// Java
EditText composer = findViewById(R.id.composer);
composer.setText("Allo!");
// Kotlin 
view.composer.text = "Allo!"

Đây tuy không phải là một tính năng quá lớn tuy nhiên nó có thể giúp ta loại bỏ nhưng code bind views “không cần thiết” thường thấy ở Activity/Fragment.

4. Function trong 1 dòng

Funtions một dòng có thể viết trong java tuy nhiên ta sẽ phải tuần theo những style đã được mặc định sẵn. Kotlin kế thừa tính năng này và làm nó tốt hơn. Không extra lines và brace thừa thãi.

// Java
public String fullName() {
    return getFirstName() + " " + getLastName();
}
// Kotlin
fun fullName() = "${firstName} ${lastName}"

Note : object trả về của kotlin được ngụ ý chỉ định, như ví dụ trên kotlin tự động biết kiểu trả về là String.

5. Các method được tối ưu

Kotlin cải thiện các method ta hay dùng trong Kotlin Stardard Library

// Java
if (name.toLowerCase().contains(firstName.toLowerCase())) {
    ...
}
// Kotlin
if (name.contains(firstName, true)) { ... }

Chỉ một chút cải tiến nho nhỏ nhưng có thể thấy, code dễ đọc và gọn hơn rất nhiều.

6. Giảm thiểu việc check “if(whatever != null)”

Trong Java việc check null rất phổ biến, ta rất dễ miss việc này và nó làm code trông xấu đi. Với tính năng null safety của kotlin, ta sẽ thấy để khả năng đọc code khi viết bằng kotlin dễ dàng hơn rất nhiều.

// Java
if (message != null) {
    System.out.println(message)
}
// Kotlin
message?.let { println(it) }

Nếu message khác null. Kotlin sẽ “let” các hàm bên trong block chạy, còn nếu null sẽ bỏ qua nó. Hãy để ý đến println(it) statement. Keyword “it” chính là object message bạn check ban đầu.

7. The Elvis operator

Kotlin xử lí scenario phổ biến nhất “Nếu cái gì đó null thì ta gán nó một giá trị và trả về, ngược lại thì giữ nguyên”.

// Java
if (people == null) {
    people = new ArrayList();
}
return people;
// Kotlin
return people ?: emptyArrayList()

Trên đây ta đã lướt qua một vài tính năng thú vị của Kotlin. Cảm ơn các bạn đã theo dõi.

0