Améliorer la productivité avec Kotlin

J'ai récemment écrit un article sur les nouveautés de Kotlin 1.4.20. Et le premier commentaire s'est avéré un peu injuste pour Kotlin.





Il a fait valoir que pourquoi Kotlin devrait-il être dans le développement mobile, car il y a Java, car c'est l'un des meilleurs langages de programmation.





Et pour tout cela, beaucoup de code Android Framework est écrit en Java, ou plutôt à plus de 50%!





Avant de partager mon opinion et de présenter cette histoire, ne me battez pas avec des chaises.





Eh bien, commençons par les statistiques!





Que disent les développeurs professionnels?

Google , Kotlin.





:





67 % Android , Kotlin, , !





Florina Muntenescu (Android Developer Advocate)





, Kotlin, 100% .





, .





Google , ?

Android Kotlin:





  1. - , .





  2. - Kotlin Java





Flipkart:





, 50% , , Kotlin.





Cash App:





Cash App Kotlin, Builder - , ( 25% ).





Kotlin Zomato





Duolingo

Duolingo - Google Play ( 100 . ).





46% ( , ..). Kotlin.





. : , , 2 !





, , !





: Java Kotlin 30%, 90%!





Kotlin

Android Java, :





1)





2) Build





Kotlin , .





Builder Java:





public class Task {
     private final String name;
     private final Date deadline;
     private final TaskPriority priority;
     private final boolean completed;

     private Task(String name, Date deadline, TaskPriority priority, boolean completed) {
         this.name = name;
         this.deadline = deadline;
         this.priority = priority;
         this.completed = completed;
     }

     public static class Builder {
         private final String name;
         private Date deadline;
         private TaskPriority priority;
         private boolean completed;

         public Builder(String name) {
             this.name = name;
         }

         public Builder setDeadline(Date deadline) {
             this.deadline = deadline;
         return this;
         }

         public Builder setPriority(TaskPriority priority) {
             this.priority = priority;
             return this;
         }

         public Builder setCompleted(boolean completed) {
             this.completed = completed;
             return this;
         }

         public Task build() {
             return new Task(name, deadline, priority, completed);
         }
     }
}
      
      



Kotlin ( hashCode(),



equals()



):





data class Task(
     val name: String,
     val deadline: Date = DEFAULT_DEADLINE,
     val priority: TaskPriority = TaskPriority.LOW,
     val completed: Boolean = false
)
      
      



!





Singleton Java:





public class Singleton{
    private static volatile Singleton INSTANCE;
    private Singleton(){}
    public static Singleton getInstance(){
        if (INSTANCE == null) {                // Single Checked
            synchronized (Singleton.class) {
                if (INSTANCE == null) {        // Double checked
                    INSTANCE = new Singleton();
                }
            }
        }
        return INSTANCE;
    }
    private int count = 0;
    public int count(){ return count++; }
 }
      
      



Kotlin:





object Singleton {
     private var count = 0
     fun count(): Int {
         return count++
     }
 }
      
      



.





Kotlin , , :





fun borrow(){
    library -= book //  operator overloading
    val (title, author) = book //  data 
    println("Borrowed $title") //  
}
      
      



, Kotlin null :





var str: String? = null // , , 
												//  str    null
        
println(str?.length) //    Safe (?) 
    
val len = str?.length ?: 0 //  0,  str   null

var listOf: List<String>? = null //    null

listOf?.filter { it.length > 3 } //   
    	?.map { it.length }
      ?.forEach { println("Length more 3 -> $it") }
      
      



Android Kotlin, , :





@Inject
lateinit var viewModelFactory: MyViewModelFactory

private val viewModel by viewModels<MyViewModel> { viewModelFactory }

      
      



Kotlin , :





dependencies {
  	implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
  	implementation "androidx.room:room-ktx:$room_version"
		implementation "androidx.paging:paging-runtime-ktx:$paging_version"
}
      
      



Java , , Kotlin 95% , Java .





, Java , :)





Kotlin , Android Framework Java Java.





:





  1. Medium Florina Muntenescu (Android Developer Advocate)





  2. Twitter Florina Muntenescu





  3. Twitter Android Developers





  4. Duolingo Kotlin





  5. Android Developers Store: Zomato Kotlin












All Articles