Structurer son code 🧱
Contenu
On peut rapidement se perdre dans une fonction quand on a plus de 100 lignes de code. Nous allons voir :
- quand faire une méthode et pourquoi (nommer, réutiliser, etc.)
- les fonctions de refactor de l'environnement pour faire tout ça sans rien casser (parce qu'un travail qui marche c'est précieux)
Regarder la vidéo sur le refactoring en kotlin dans IntelliJ IDEA.
- Compléter les exercices de la semaine
- Penser sérieusement à quel refactor aurait du sens pour ton TP
- Continuer le premier travail
Exercice Valeur ou Référence
Effectue la trace du programme suivant :
fun main() {
var a : Int = 0
var b : Int = testPassageValeur(a)
var listA : MutableList<Int> = arrayListOf(1, 2, 3, 4, 5)
var listB : MutableList<Int> = testPassageReference(listA)
println(b)
println(listB)
}
fun testPassageValeur(a : Int ) : Int {
return a + 2
}
fun testPassageReference(a : MutableList<Int>) : MutableList<Int>
{
a.add(6)
return a
}
Vérifie bien à chaque étape le contexte d'éxécution, ce qui signifie explorer non seulement le contexte de la fonction utilisée, mais également celui de la fonction appelante (via la pile d'appel). Y a t'il un comportement surprenant ? Si oui, explique le dans tes propres mots.
Exercice RefactorTonTP
En utilisant les outils de refactor d'IntelliJ IDEA, améliore la lisibilité de ton TP1.
Après chaque refactor :
- valide que le comportement de ton application n'a pas changé
- fais un commit de refactor
- pousse-le sur ton repo
Exercice Jimmy et Johnny 👨🎤👨💼
Jimmy et Johnny se chicanent depuis 10 ans. Chacun a écrit une méthode afin de lire un fichier. Jimmy dit que les deux méthodes sont équivalentes alors que Johnny dit que le résultat n'est pas le même. Qui a raison et pourquoi?
Teste le code pour démontrer si les méthodes sont pareilles ou non.
fun lireDesFichiersJimmy() {
for (i in 0 until 10) {
try {
lireFichier(i)
println("fichier $i lu par Jimmy")
} catch (e: FileNotFoundException) {
println("fichier $i n'existe pas Jimmy")
}
}
}
fun lireDesFichiersJohnny() {
var cpt = 0
try {
for (i in 0 until 10) {
lireFichier(i)
cpt = i
println("fichier $i lu par Johnny")
}
} catch (e: FileNotFoundException) {
println("fichier $cpt n'existe pas Johnny")
}
}