Java öldü, çok yaşa Kotlin

Kotlin’de boş güvenlik birinci sınıf bir vatandaştır. Örneğin :

Mayıs 2017’de Kotlin’in resmi Android desteği açıklandığında gerçekten heyecanlandım. Beni yanlış anlama, Java’yı seviyorum: profesyonelce kullandığım ilk dildi ve çok güçlü bir topluma, kullanabileceğim sayısız kütüphaneye ve orada en iyi araçlara sahipti. Bununla birlikte… aynı zamanda kendi sorunları da var: son sürümlerin isteğe bağlı veya null değerleriyle başa çıkmak için iyi bir yolu bulunmadığı ve sonuçlarının yirmi yıl önce verilen kararlarla geriye dönük uyumlulukla yavaşladığı için çok ayrıntılı. Kotlin temiz bir nefes aldı.

Raptiye’nin geçiş stratejisi

Kolay geçiş yaptı şeylerden biri olduğunu orada burada birkaç quirks dışında iki dil arasında birlikte çalışabilirlik sorunsuz olduğunu: biz hala (çoğu KOTLIN yazılmamış üçüncü taraf kütüphanelerin çok kullanırım ) ve yeni kodumuz eski kodumuzda değişiklik yapmadan arama yapar ve çağrılır.

Bizim strateji benimsenmesi kabaca oldu:

  • Kotlin’de test yazmaya başla: bu bize yapım sürecine biraz güven verdi ve dile alışmak için bir oyun alanı kurmamızı sağladı.
  • Faydaların ne olduğunu görmek için Java’dan Kotlin’e önemsiz kodlar geçirin ( veri sınıfı olabilecek sınıflar bu adım için popüler bir adaydı)
  • Kotlin’de yeni özellikler uygulayın
  • Java’nın bazı sorunlarından muzdarip olan kod parçaları için testler yazın (hükümsüzlük sorunları, ayrıntı ayrılığı)…
  • … Ve sonra bu kod parçalarını Kotlin’e taşı.

Ne ile mücadele ettik?

Boş Güvenlik

Kotlin’de boş güvenlik birinci sınıf bir vatandaştır. Örneğin :

val nonNull: String = null // compilation error
val possiblyNull: String? = “but not null” // this works!
// compilation error, String method call on a nullable String
val uppercase = possiblyNull.toUpperCase()

Bu harika, çünkü yöntemlerinizi hangi tür değerlerin geri döndüğü hakkında düşünmeye zorlar ve arayanlar potansiyel boş davaları uygun şekilde ele almaya çalışırlar.

Ancak, Java ile birlikte çalışabilirlik bildirimi uyumlu biriyle işaretlenmiş sürece bir tür null olup olmadığını derleyici bilmiyor demektir nullability ek açıklamaları . Şu anda, kullandığımız üçüncü taraf kütüphanelerin çoğu (Android API’ler dahil!) Ve kendi eski kodlarımızdan bazıları açıklamalı değil ve Kotlin derleyicisi aşağıdaki gibi (tehlikeli) şeyler yapmamıza izin verecek:

Java’da:

class Foo {
    private static boolean shouldTrollKotlin() {
        return true;
    }

    public static String bar() {
        if (shouldTrollKotlin()) {
            return null;
        }
        return “I’m cool”;
    }
}

Kotlin’de:

val myValue = Foo.bar.toUpperCase() // NullPointerException at runtime!

Azaltma adımları

  • Kotlin denilen eski Java kodunuza geri dönün ve geri dönüş türlerinin düzenlenebilirliğine açıklama ekleyin
  • Açıklamalı olmayan kodu çağırırken, kodu gözden geçirin ve döndürülen değerlerin boş olup olmadığını anlayın. Öyleyse, Kotlin tarafındaki yazıyı belirtin, bu noktadan itibaren yazı bilgisi daha eksiksiz olur. Yani, önceki örnek için :
// Do this:
val safe: String? = Foo.bar()
// Instead of:
val unsafe = Foo.bar()
  • Android Studio’da platform türleri için uyarıları etkinleştir (Ayarlar> Editör> Denetimler> Kotlin> Java birlikte çalışma sorunları> İşlev veya özellik platform türüne sahip)
  • Bonus: Geciktirme ek açıklamaları istemek için kullandığınız 3. taraf kütüphaneler için bilet oluşturun (veya onlara oy verin!). Daha da iyisi, kendiniz ekleyerek Çekme İsteği gönderin!

Stil rehberi

Java stil rehberimiz AOSP Java Kod Stilinin , Google Java Stil Rehberinin , diğer Raptiye kod tabanlarından devralınan kuralların ve bunlara yıllar boyunca eklediğimiz birkaç ekleme ve istisnaların bir karışımıdır . Tüm bu kuralları akılda tutmanın zor olmasının yanı sıra, çoğu hiçbir şekilde uygulanmaz (bazılarının üretken olmayan kod incelemeleri sırasında tutarlılığı emen ve nitpicks’i işaret eden kişiler hariç).

Kotlin’i yazmaya başladığımızda, konsolide edilmiş bir stil rehberi ya da bunun için kodlama kuralları yoktu ve çoğunlukla Java’da yaptığımız şeylerin çoğunu taşıyorduk. O zamandan beri, resmi Kotlin kodlama sözleşmeleri gelişti ve bunları yeni kodlar için kabul ettik (ve üzerinde çalıştığımız zaman eski kodu yeniden biçimlendirmeye çalışıyoruz). Dahası, bazı kurallara uyulmadığında derleme işleminde başarısız olmak için detekt kullanıyoruz .

Azaltma adımları

  • Diğer diller (ya da Kotlin!) İçin (ya da diğerlerinin) stil kılavuzlarını kör bir şekilde takip etmeyin. Her kuralı anlayın, değerini ölçün ve savunuculuğunuzu yapın…
  • … Ama onlara değeri tamamen görmeseniz bile, bunlara liberal olarak istisnalar eklemeyin. Her yeni istisna, yeni mühendisler için daha yüksek yükleme maliyetleri ve potansiyel olarak takım için özel yapılandırma anlamına gelir.

“Java Yolu” Kotlin’i Yazmak

O (1) bilmediğiniz bir doğal dilin tam sözlüğüne erişim izni olsa bile, konuşamazsınız; kesinlikle geçebilirdin ama konuşman doğal gelmiyordu. Kotlin’i yazdığınızda benzer bir şey olur, fakat Java’da düşünün. Özellikle başlangıçta, bazen şöyle şeyler yazıyorduk:

val notEmptyStrings = mutableListOf < String > ()
allTheStrings.forEach {
    if (it.isNotEmpty ()) {
        notEmptyStrings.add (o)
    }
}

Tercih edilen işlevsel stili kullanarak kolayca daha deyimsel hale getirilebilir :

val notEmptyStrings = allStrings.filter {it.isNotEmpty ()}

Ya da biraz daha karmaşık bir şey için yapıyorduk:

val allStrings = mutableListOf<String>()
val currentNode = root

while (currentNode != null) {
    allStrings.add(currentNode.value)
    currentNode = currentNode.next
}

Azaltma adımları

  • Öğrenin! Oku! Yazmak! Pek çok durumda, Kotlin yalnızca yeni bir dil değil, aynı zamanda yeni bir paradigmadır: işlevsel programlama, değişmezlik ve boş güvenliği benimseyerek kodunuzu daha az ayrıntılı ve daha az hata yapmayı sağlayacak birçok API sağlar. Tüm avantajlardan yararlanmak için, bu API’leri kullanmanız gerekir. Orada büyük bir sıçrama yaparak ilgili makale ve kitaplar.
  • Paylaş! Biz% 50 Kotlin işareti ulaştı, biz (bir şey varsa Raptiye mobil ekip bu, programlama daha çok seven kek dahil bir kutlama organize gıda ) ve daha da önemlisi, değişmezlik, fonksiyonel programlama ve tüylenme kuralları gibi konularda yıldırım görüşmeler . Kotlin’i çok fazla kullanmayan ekip üyeleri avantajlar üzerinden satıldı ve daha fazla kullanmaya başladı.
  • Sık sık yükseltin. Hem Kotlin hem de Android Studio, istikrarı artıran ve olası hatalara karşı korunmak için yararlı denetimler ekleyen yeni sürümleri sürekli olarak piyasaya sürüyor.

Comments

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

GIPHY App Key not set. Please check settings

Yükleniyor…

0

Ne düşünüyorsun?

Cumhuriyet nedir?

Niş Pazarlama

Niş Pazarlama Nedir? Nasıl Yapılır?