Chúng tôi đã phát hiện ra rằng Kotlin không chỉ làm cho mã của chúng tôi tốt hơn, mà còn làm gia tăng hạnh phúc của các lập trình viên . Tất cả điều này đảm bảo chúng tôi đang tạo ra ứng dụng tốt nhất mà chúng tôi có thể cho hàng chục nghìn người dùng Android mà chúng tôi đang hỗ trợ.

Với một sự trải nghiệm mới về ngôn ngữ này, tôi nghĩ rằng sẽ có một vài chia sẽ hữu ích để các bạn thấy rõ sự ưu việt của Kotlin khi làm việc với nó. Không giống như hầu hết các bài viết giới thiệu cho bạn về một ngôn ngữ, tôi sẽ tránh sử dụng quá nhiều từ lóng về programing. Thay vào đó, tôi sẽ cố gắng sử dụng tiếng Anh giản dị với hy vọng rằng nó dễ tiếp cận hơn cho người mới bắt đầu. 🤗

Một số lưu ý về các đoạn code ví dụ:

  • Tôi không phải là một chuyên gia về Kotlin. Đọc, xem xét và thảo luận!
  • Sẽ nhìn tốt hơn trên trình duyệt trên máy tính để bàn . Bạn có thể sử dụng ứng dụng trên thiết bị di động ở chế độ nằm ngang, nhưng tôi khuyên bạn nên dùng laptop để đọc chúng.
  • Chúng ngắn gọn và với mục đích đơn giản. Các ví dụ dài dòng có khuynh hướng dễ gây nhầm lẫn. Hãy lấy những ví dụ đơn giản này và áp dụng chúng vào mục đích của riêng bạn, và bạn sẽ thấy tốt hơn nhiều.

Hãy bắt đầu với bảy mục yêu thích hiện tại của tôi!

  1. Đơn giản hoá if/else if/else blocks bằng when Một trong những thứ tôi thích nhất
// Java
if (firstName.equals("Dan")) {
    person.setTeam(programmers);
} else if (lastName.equals("Dihiansan")) {
    person.setTeam(designers);
} else {
    person.setTeam(others);
}
// Kotlin
when {
    firstName == "Dan"       -> person.team = programmers
    lastName  == "Dihiansan" -> person.team = designers
    else                     -> person.team = others
}

When có tính năng giống như là khối block if tuy nhiên trông dễ đọc hơn rất là nhiều.

Có những quy ước tương tự trong trường hợp có duy nhất 1 đối số thuường được sử dụng trong các block switch/case dài dòng xấu xí trong java.

// 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
when (firstName) {
    "Dan", "Jay" -> person.team = programmers
    "Jamie"      -> person.team = designers
    else         -> person.team = others
}
  1. Beautifying ngay cả đối với click handler

Sử dụng Anko , một thư viện được xây dựng cho Kotlin, click listener trông dễ dàng hơn nhiều Tôi ghét viết những điều này bằng Java đến nỗi tôi hầu như không thể tự mình viết một ví dụ ở đây.

  // Java
view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        System.out.println("This is horrible");
    }
});
// Kotlin
view.onClick {
    println("WAT")
}
  1. Không còn sử dụng view binding

Bằng việc sử dụng Kotlin Android Extensions bạn không cần phải bind tới 1 view trước khi sử dụng các thành phần của chúng, bạn hoàn toàn có thể tham chiếu trực tiếp tới chúng.

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

Điều này không phải là 1 điều gì đó lớn lao tuy nhiên bạn thử nghĩ tới những đoạn mã trong Activity/Controller không còn phải dùng view binding trước khi sử dung chúng nữa thì cũng tốt hơn rất nhiều. Kotlin đã bỏ qua điều đó.

  1. Functions in one line

Nhiều function được viết trên một dòng là kĩ thuật có thể viết được trên java nhưng nó lại không phổ biến vì phong cách này không được chấp nhận rộng rãi. Sự ngắn gọn vốn có của Kotlin lại rất phù hợp với phong cách này cho nên với Kotlin thì nó khá là phổ biến và trông khá đẹp mắt. Không có dòng thêm và cũng không cần ngoăc nhọn.

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

Bonus : kiểu ngụ ý trả về được ngụ ý, vì vậy Kotlin sẽ tự động biết rằng phương thức trả về một String mà không cần phải viết "String" ở bất cứ đâu. Bạn cũng có thể nhận thấy trong ví dụ này 1) không cần khai báo public và 2) String interpolation .

  1. Xây dựng các method thuận tiện dựa trên các object quen thuộc.

Kotlin đã mở rộng dựa trên các object và phương thức quen thuộc để tạo ra sự dễ dùng và đưa chúng vào các package trong Kotlin Standard Library. Lấy ví dụ so sánh String:

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

Không phải là một sự khác biệt rất lớn, nhưng đủ để cải thiện khả năng đọc ở nhiều nơi. Thư viện chuẩn có hàng tấn các kiểu tinh chỉnh này. Hoàn hảo!

  1. Giảm việc phải sử dụng check if (whatever != null)

Kiểm tra Null quá khổ sở trong Java và rằng if (whatever! = Null) có lẽ là trong những cơn ác mộng thuường xuyên của bạn. Kotlin có một số tính năng an toàn check null ấn tượng được xây dựng sẵn, và "let" chỉ là một trong những cách để đạt được mã dễ đọc hơn.

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

Ở đây, nếu message không phải là null, Kotlin sẽ cho phép khối (những gì bên trong các dấu ngoặc) chạy. Nếu nó là null thì bỏ qua nó. Có một chút đáng khen khác - hãy chú ý câu lệnh println (it) ? Từ khóa it cho phép bạn tham chiếu đối tượng sử dụng nó.

  1. Toán tử Elvis

Tôi thích toán tử này chủ yếu là bởi cái tên Elvis, nó trông giống thế này:

?: // Turn your head to the left, you may see someone familiar
// Java
if (people == null) {
    people = new ArrayList();
}
return people;
// Kotlin
return people ?: emptyArrayList()

Ở đây nếu people là khác null thì nó sẽ được trả về còn nếu nó null thì giá trị bên phải nó sẽ được trả về.

Những tính năng ở trên chỉ là một cái nhìn ngắn gọn về một số điều làm cho cuộc sống của tôi tốt hơn mỗi ngày làm việc với Kotlin.