Büyük ekipler için Kotlin'i kullanın

Yeni bir dile geçmek göz korkutucu bir iş olabilir. Başarının tarifi Ekibinizi başarıya ulaştırmak için yavaş başlar, küçük parçalar halinde hareket edebilir ve sık sık test edebilirsiniz. Kotlin, JVM bayt koduna derlediği için taşımayı kolaylaştırır. Java ile tamamen birlikte çalışabilir.

Ekibi oluşturma

Taşıma işleminden önceki ilk adım, her bir taşıma işlemine ilişkin nasıl sağlayabileceğini de öğreneceksiniz. Aşağıda, kampanya performansınızı hızlandırmak için yararlı bulabileceğiniz birkaç ipucu ve öğrenmeye devam eder.

Çalışma grupları oluşturun

Çalışma grupları, öğrenmeyi ve elde tutmayı kolaylaştırmanın etkili bir yoludur. Araştırmaların önerisi öğrendiklerinizi grup ortamında tekrarlamanın, malzemeyi pekiştirin. Bir Kotlin kitabı veya diğer ve grubun her üyesi için bir çalışma materyali hazırlayıp gruptan bölüm oluyorum. Her toplantıda grup nelerin sorular ve gözlemler üzerine konuşurlar.

Öğretme kültürü oluşturun

Herkes kendini öğretmen olarak görmese de herkes öğretebilir. Bir teknoloji veya ekip liderinden bireysel bir katkıda bulunan kişiye kadar herkes başarıya ulaşmasına yardımcı olabilecek bir öğrenme ortamını teşvik eder. Paydaşların ihtiyaçlarını ekipten bir kişinin düzenli olarak sunum yaptığı öğrendiği veya paylaşmak istediği bir şey hakkında konuşmaya atanan kullanıcıdır. Şunları yapabilirsiniz: gönüllülerden her biri için yeni bir bölüm sunmalarını isteyerek çalışma grubunuzdan yararlanın. bir hafta arayla ekibinizi rahat hissettiği bir noktaya gelene kadar dili'ne dokunun.

Bir şampiyon belirleyin

Son olarak, öğrenme girişiminde bulunacak bir şampiyon belirleyin. Bu kişi şu işlemleri yapabilir: benimseme sürecini başlatırken bir konu uzmanı (SME) ile birlikte çalışmalısınız. Evet Bu kişiyi proje yönetimiyle ilgili tüm alıştırma toplantılarınıza Kotlin. İdeal olanı, bu kişinin Kotlin konusunda tutkulu olması ve çalışma bilgisi.

Yavaş entegrasyon

Yavaş yavaş başlamak ve ekosisteminizin hangi kısımlarının daha iyi performans önce hareket etmek gerekir. Bunu çoğu zaman en iyi uygulama, Google Cloud'u kullanarak bir uygulamaya koymaktır. Seçilen uygulamayı taşırken, her durum farklıdır. Ancak, genel olarak bakabileceğiniz birkaç nokta vardır.

Veri modeli

Veri modeliniz muhtemelen birçok durum bilgisi ve birkaç yöntemlerine göz atın. Veri modelinde toString(), equals() ve hashcode(). Bu yöntemler genellikle kolayca test edilebiliyor.

Örneğin, aşağıdaki Java snippet'ini varsayalım:

public class Person {

   private String firstName;
   private String lastName;
   // ...

   public String getFirstName() {
       return firstName;
   }

   public void setFirstName(String firstName) {
       this.firstName = firstName;
   }

   public String getLastName() {
       return lastName;
   }

   public void setLastName(String lastName) {
       this.lastName = lastName;
   }

   @Override
   public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;
       Person person = (Person) o;
       return Objects.equals(firstName, person.firstName) &&
               Objects.equals(lastName, person.lastName);
   }

   @Override
   public int hashCode() {
       return Objects.hash(firstName, lastName);
   }

   @Override
   public String toString() {
       return "Person{" +
               "firstName='" + firstName + '\'' +
               ", lastName='" + lastName + '\'' +
               '}';
   }
}

Java sınıfını aşağıda gösterildiği gibi, tek bir Kotlin satırıyla değiştirebilirsiniz:

data class Person(var firstName: String?, var lastName : String?)

Daha sonra bu kod, mevcut test paketinizle karşılaştırılarak birim test edilebilir. Buradaki fikir tek seferde bir modelle küçük adımlarla başlamak ve çoğunlukla davranıştan değil, durumu ifade eder. Bu süreçte sık sık test yapmayı da unutmayın.

Testleri taşı

Dikkate alınması gereken bir başka başlangıç yolu, mevcut testleri dönüştürüp yazmaya başlamaktır yeni testler mevcut. Bu sayede ekibinize projenin zamanı ve teslimatları hakkında rahat olmaları için dili ve dili kontrol edin.

Yardımcı program yöntemlerini uzantı işlevlerine taşıma

Statik yardımcı program sınıfları (StringUtils, IntegerUtils, DateUtils, YourCustomTypeUtils vb.) şu şekilde temsil edilebilir: Kotlin uzantı işlevleri ve mevcut Java kod tabanınız tarafından kullanılır.

Örneğin, birkaç yöntem içeren bir StringUtils sınıfınız olduğunu düşünelim:

package com.java.project;

public class StringUtils {

   public static String foo(String receiver) {
       return receiver...;  // Transform the receiver in some way
   }

   public static String bar(String receiver) {
       return receiver...;  // Transform the receiver in some way
   }

}

Bu yöntemler daha sonra şurada gösterildiği gibi uygulamanızın başka bir yerinde kullanılabilir: şu örneği inceleyin:

...

String myString = ...
String fooString = StringUtils.foo(myString);

...

Kotlin uzantı işlevlerini kullanarak aynı Utils arayüzünü Java arayanları ile aynı zamanda siteniz için daha kısa ve öz bir API sunar Kotlin kod tabanını büyütüyor.

Bunu yapmak için, bu Utils sınıfını IDE tarafından sağlanan otomatik dönüştürme. Örnek çıkış şuna benzer görünebilir: şu:

package com.java.project

object StringUtils {

   fun foo(receiver: String): String {
       return receiver...;  // Transform the receiver in some way
   }

   fun bar(receiver: String): String {
       return receiver...;  // Transform the receiver in some way
   }

}

Daha sonra, sınıfı veya nesne tanımını kaldırın ve her işlev adının önüne işlevin uygulanması gereken türünü belirtin ve bunu, istediğiniz türe aşağıdaki örnekte gösterildiği gibi işlevin içinde:

package com.java.project

fun String.foo(): String {
    return this...;  // Transform the receiver in some way
}

fun String.bar(): String {
    return this...;  // Transform the receiver in some way
}

Son olarak, kaynak dosyanın en üstüne JvmName ek açıklaması ekleyerek aşağıda gösterildiği gibi, uygulamanızın geri kalanıyla uyumlu derlenmiş ad örnek:

@file:JvmName("StringUtils")
package com.java.project
...

Son sürüm aşağıdakine benzer bir görünümde olacaktır:

@file:JvmName("StringUtils")
package com.java.project

fun String.foo(): String {
    return this...;  // Transform `this` string in some way
}

fun String.bar(): String {
    return this...;  // Transform `this` string in some way
}

Bu işlevlerin artık Java veya Kotlin kullanılarak kurallarından yararlanır.

Kotlin

...
val myString: String = ...
val fooString = myString.foo()
...

Java

...
String myString = ...
String fooString = StringUtils.foo(myString);
...

Taşıma işlemini tamamlama

Ekibiniz Kotlin kullanımı konusunda rahat olduğunda ve daha küçük alanlara taşındıktan sonra parçalar, faaliyetler, süreçler vb. gibi daha büyük bileşenleri ViewModel nesne ve iş mantığıyla ilgili diğer sınıflar.

Dikkat edilmesi gereken noktalar

Java'nın belirli bir tarzı olduğu gibi, Kotlin'in de kendi deyimsel stili vardır. kısa ve öz olmasına katkı sağlıyor. Ancak, başlangıçta Ekibinizin ürettiği Kotlin kodu, yerini almak istediği Java koduna daha çok benziyor. Ekibinizin Kotlin deneyimi büyüdükçe bu durum da zaman içinde değişir. Unutmayın, aşamalı başarının anahtarı değişimdir.

Kotlin kod tabanınız olarak tutarlılık sağlamak için yapabileceğiniz birkaç şey: büyür:

Ortak kodlama standartları

Benimseme sürecinin başında standart bir kodlama kuralları dizisi tanımladığınızdan emin olun. bahsedeceğim. Android'den uzaklaşabilirsiniz. Uygun durumlarda Kotlin stil kılavuzu.

Statik analiz araçları

Ekibiniz için belirlenen kodlama standartlarını uygulamak için Android lint ve diğer statik analiz araçları. klint, üçüncü taraf Kotlin linter, Kotlin için ek kurallar da sağlar.

Sürekli entegrasyon

Yaygın kodlama standartlarına uyduğunuzdan emin olun ve yeterli test sağlayın kapsamıyla ilgili daha fazla bilgi edinin. Bunu otomatik bir derleme işleminin parçası haline getirme bu standartlara uygunluğun sağlanmasına yardımcı olabilir.

Birlikte çalışabilirlik

Kotlin çoğunlukla Java ile sorunsuz bir şekilde birlikte çalışır, ancak takip ediliyor.

Boş değer atanabilirliği

Kotlin, boş değerleri belirlemek için derlenen koddaki null değer ek açıklamalarına dayanır çok heyecanlıyız. Ek açıklama sağlanmazsa Kotlin varsayılan olarak platform türü (null veya null olmayan tür olarak değerlendirilebilir). Bu Ancak giderilmezse çalışma zamanında NullPointerException sorunlarına yol açabilir dikkatli olun.

Yeni Özellikleri Benimseme

Kotlin, insanların yeni kitaplıklar ve sentetik şekerlerin kullanılmasını sağlayarak gelişim artırmaya yardımcı olur. hız. Bununla birlikte, Kotlin standardını kullanırken dikkatli ve metodik olun kitaplık işlevleri, koleksiyon işlevleri, eş yordamlar, ve lambdas.

Aşağıda, yeni Kotlin geliştiricilerinin en sık karşılaştığı tuzaklardan biri yer almaktadır. Şunu varsayın: aşağıdaki Kotlin kodunu takip edin:

val nullableFoo: Foo? = ...

// This lambda executes only if nullableFoo is not null
// and `foo` is of the non-nullable Foo type
nullableFoo?.let { foo ->
   foo.baz()
   foo.zap()
}

Bu örnekteki amaç, foo.baz() ve foo.zap() anahtar kelimelerini nullableFoo null olmadığından NullPointerException parametresinden kaçınılır. Bu ve beklendiği gibi çalıştığından, okunması basit bir boş kontrole kıyasla daha az sezgiseldir. akıllı yayın aşağıdaki örnekte gösterildiği gibi:

val nullableFoo: Foo? = null
if (nullableFoo != null) {
    nullableFoo.baz() // Using !! or ?. isn't required; the Kotlin compiler infers non-nullability
    nullableFoo.zap() // from guard condition; smart casts nullableFoo to Foo inside this block
}

Test

Kotlin'de sınıflar ve işlevlerin genişletilmesi varsayılan olarak kapalıdır. Siz alt sınıfa eklemek istediğiniz sınıfları ve işlevleri açıkça açmanız gerekir. Bu davranış, besteyi tanıtmak için seçilen bir dil tasarım kararıdır çok fazla oluyor. Kotlin, kullanıcıların günlük hayatlarında delegation basit bir tasarım öğesidir.

Bu davranış, Mockito gibi sahte çerçeveler için sorun teşkil eder. sırasındaki davranışları geçersiz kılmak için arayüz uygulaması veya devralma yoluyla teşvik etmek anlamına gelir. Birim testleri için, Örnek Oluşturucu özelliği olan Mockito'nun final sınıfları ve yöntemleriyle ilgili örnek versiyonları inceleyin. Alternatif olarak, All-Open derleyici eklentisi test etmek istediğiniz Kotlin sınıflarını ve üyelerini açın. derlemenizi sağlar. Bu eklentiyi kullanmanın temel avantajı testler yapabilirsiniz.

Daha fazla bilgi

Kotlin'i kullanma hakkında daha fazla bilgi için aşağıdaki bağlantılara göz atın: