Améliorer la lisibilité du code avec les extensions Kotlin

En prévision du début du cours "Kotlin Backend Developer", nous invitons les futurs étudiants et tous ceux qui souhaitent regarder une leçon ouverte sur le thème "Révision des" 12 facteurs ": créer un microservice moderne sur Kotlin".



Nous partageons également avec vous la traduction traditionnelle de documents utiles.






Terminologie Kotlin: Fonctions d'extension et propriétés d'extension

Lorsque vous avez utilisé une API, vouliez-vous lui ajouter de nouvelles fonctions ou propriétés?





( ) , . Java Utils



, , . , .





, Kotlin - -. , . Android Studio , Java. , Android SDK .





, , !





-

, Dog



,  , , .





<!-- Copyright 2019 Google LLC.
SPDX-License-Identifier: Apache-2.0 -->

data class Dog(val name: String, val breed: String, val age: Int)
      
      



,  Dog



, , , - . -, , : . this



-, - .





 printDogInformation()



  ,  Dog



.





<!-- Copyright 2019 Google LLC. 
   SPDX-License-Identifier: Apache-2.0 -->

fun main() {
  val dog = Dog("Jen", "Pomeranian", 13)
  dog.printDogInformation()
}
      
      



- Java

- , Java . , , , . - printDogInformation()



Java:





<!-- Copyright 2019 Google LLC.
SPDX-License-Identifier: Apache-2.0 -->

DogExtensionKt.printDogInformation(dog);
      
      



- ,

, (nullable). null



-, - nullable- null



. printInformation()



, , .





<!-- Copyright 2019 Google LLC. 
   SPDX-License-Identifier: Apache-2.0 -->

fun Dog?.printInformation() {
  if (this == null){
    println("No dog found")
    return
  }
  println("Meet ${this.name} a ${this.age} year old ${this.breed}")
}
      
      



, null  printInformation()



.





<!-- Copyright 2019 Google LLC. 
   SPDX-License-Identifier: Apache-2.0 -->

fun main() {
  val dog : Dog? = null
  dog.printInformation() // prints "No dog found"
}
      
      



-

, , . - isReadyToAdopt, , 1 .





<!-- Copyright 2019 Google LLC. 
   SPDX-License-Identifier: Apache-2.0 -->

val Dog.isReadyToAdopt: Boolean
get() = this.age > 1
      
      



- ,  Dog



.





<!-- Copyright 2019 Google LLC. 
   SPDX-License-Identifier: Apache-2.0 -->

fun main() {
  val dog1 = Dog("Jen", "Pomeranian", 13)
  if(dog1.isReadyToAdopt){
    print("${dog1.name} is ready to be adopted")
  }
}
      
      



-

- . - , - , -, , , , . ,  toUppercase()



, (String),  convertToUppercase()



.





, , , , . , , - .





 printDogInformation()



Android Studio. Tools/Kotlin/Show Kotlin Bytecode (/Kotlin/ - Kotlin) Decompile ().  printDogInformation()



  :





<!-- Copyright 2019 Google LLC. 
   SPDX-License-Identifier: Apache-2.0 -->

public static final void printDogInformation(@NotNull Dog $this$printDogInformation) {
  Intrinsics.checkParameterIsNotNull($this$printDogInformation, "$this$printDogInformation");
  String var1 = "Meet " + $this$printDogInformation.getName() + ", a " + $this$printDogInformation.getAge() + " year old " + $this$printDogInformation.getBreed();
  boolean var2 = false;
  System.out.println(var1);
}
      
      



- , -. -. — .





, . , , .





:





  • .





  • - .





  • !





!






"Kotlin Backend Developer".



" «12 »: Kotlin".












All Articles