Es ist eine peinliche Geschichte, aber bis vor kurzem, als mir gesagt wurde, ich solle "schönen Code schreiben", war ich reflexartig konditioniert und dachte: "Ich sollte keinen Fehler haben." Als ich jedoch das Wort Refactoring verstand und einige Notationen und Methoden berührte, begann ich zu denken, dass schöner Code schön ist (eine kleine Übertreibung: heat_smile :), daher werde ich Ihnen ein Beispiel für grundlegendes Refactoring geben. Ich möchte Sie vorstellen.
Geben Sie die Summe aufeinanderfolgender Arrays von 1 bis 5 aus. (Die Antwort ist 15) Ich möchte herausfordern, wie man dies ordentlich beschreibt und ableitet.
p 1 + 2 + 3 + 4 + 5
… Ein Programm oder ein Taschenrechner? Die einfachste Beschreibung des Levels. Natürlich ist es nicht möglich, die Summe der Zahlen von 1 bis 100 zu berechnen. Ich möchte es erweiterbar machen.
numbers = [1,2,3,4,5]
sum = 0 #Weisen Sie der variablen Summe 0 zu
numbers.each do |n|
sum += n #Fügen Sie wiederholt die Blockvariable n zur Variablensumme hinzu
end
p sum
Es kann der erste Code sein, der in jeder Anweisung gelernt wird. Selbst beim Programmieren habe ich das Gefühl, dass "es schwierig ist, die Elemente eines Arrays als 1,2,3 zu schreiben ..." und "ich möchte jede Anweisung über mehrere Zeilen kompakt machen".
numbers = (1..5) #Erstellen eines Bereichsobjekts. 1~Bedeutet ein Array aufeinanderfolgender Werte bis zu 5.
sum = 0
numbers.each {|n| sum += n } #{}Setzen Sie es in eine Zeile mit der Blocknotation von.
p sum
__ (erster Wert .. letzter Wert) __ kann einen Wertebereich darstellen.
numbers = (1..5)
p sum = numbers.inject(0) {|n, s| n + s}
#Die Injektionsmethode arbeitet gemäß dem folgenden Ablauf.
#Das erste Argument der Methode geht in das erste Argument des Blocks.
#Das zweite Argument des Blocks enthält jedes Element des Arrays der Reihe nach.
#Der Rückgabewert des Blocks wird vom ersten Argument des Blocks geerbt.
#Wenn der iterative Prozess abgeschlossen ist, wird der Rückgabewert des Blocks zum Rückgabewert der Inject-Methode.
Mit der Inject-Methode konnten wir mehrere Argumente verarbeiten und in zwei Zeilen einfügen.
In Zukunft werde ich weiterhin den "lesbaren Code" lesen, den ich als gutes Buch gehört habe, und ich werde mein Bestes tun, um schönen Code zu schreiben, der mit Stolz gezeigt werden kann. Wenn Sie eine Meinung wie "Es ist prägnanter, so zu schreiben" haben, lassen Sie es uns bitte wissen!
Recommended Posts