C'est une histoire embarrassante, mais jusqu'à récemment, quand on m'a dit «d'écrire du beau code», j'étais conditionnée en pensant par réflexe: «J'aimerais qu'il n'y ait pas d'erreurs». Cependant, en comprenant le terme refactoring et en abordant certaines notations et méthodes, j'ai commencé à penser que le beau code était beau (un peu d'exagération: sweat_smile :), donc je vais vous donner un exemple de refactoring basique. Je voudrais vous présenter.
Sortez la somme des tableaux consécutifs de 1 à 5. (La réponse est 15) Je voudrais contester comment décrire cela proprement et en tirer.
p 1 + 2 + 3 + 4 + 5
… Un programme ou une calculatrice? La description la plus simple du niveau. Bien entendu, il n'est pas possible de traiter le cas du calcul du total des nombres de 1 à 100. Je veux le rendre extensible.
numbers = [1,2,3,4,5]
sum = 0 #Attribuer 0 à la somme des variables
numbers.each do |n|
sum += n #Ajoutez à plusieurs reprises la variable de bloc n à la somme des variables
end
p sum
Il peut s'agir du premier code à apprendre dans chaque instruction. Même en programmation, j'ai le sentiment que "c'est gênant d'écrire les éléments d'un tableau sous la forme 1,2,3 ..." et "je veux rendre chaque instruction compacte sur plusieurs lignes".
numbers = (1..5) #Création d'un objet de plage. 1~Désigne un tableau de valeurs consécutives jusqu'à 5.
sum = 0
numbers.each {|n| sum += n } #{}Mettez-le sur une ligne en utilisant la notation par blocs de.
p sum
__ (première valeur .. dernière valeur) __ peut représenter une plage de valeurs.
numbers = (1..5)
p sum = numbers.inject(0) {|n, s| n + s}
#La méthode d'injection fonctionne selon le flux suivant.
#Le premier argument de la méthode entre dans le premier argument du bloc.
#Le deuxième argument du bloc contient chaque élément du tableau dans l'ordre.
#La valeur de retour du bloc est héritée par le premier argument du bloc.
#Lorsque le processus itératif est terminé, la valeur de retour du bloc devient la valeur de retour de la méthode inject.
En utilisant la méthode inject, nous avons pu gérer plusieurs arguments et les ajuster sur deux lignes.
À l'avenir, je continuerai à lire le "Code lisible" que j'ai entendu comme un bon livre, et je ferai de mon mieux pour écrire un beau code qui peut être montré avec fierté. Si vous avez une opinion telle que "C'est plus concis d'écrire comme ça", faites-le nous savoir!
Recommended Posts