Ich beabsichtige, den Inhalt dieses Mal zu schreiben, wobei ich mich auf die Dinge konzentriere, in die selbst Ingenieure mit etwas Erfahrung fallen, daher habe ich nichts Übernatürliches geschrieben, wie [Schreiben Sie keinen doppelten Code].
**2017/03/16 Es scheint in letzter Zeit oft gesehen zu werden, also füge eins hinzu [Erbe es überhaupt nicht !!!] **
Erben Sie es nur, wenn Sie nichts dagegen tun können. Berücksichtigen Sie vorher andere Methoden wie das Strategiemuster und das zusammengesetzte Muster, aber nur, wenn es sinnvoll ist, zu erben. Grundsätzlich ist es skalierbarer und Testcode ist einfacher anzuwenden, wenn Sie ihn nicht erben.
Überspringen Sie es nicht mit "Ah, Vererbung. Ja, ja." Nicht wirklich !!! Fast jeder Ingenieur weiß, was [ist-ein] ist. Weil es ein Konzept ist, das in allen Büchern zum Objektdenken vorkommt.
Nach meiner Erfahrung vernachlässigen jedoch zu viele Menschen dieses Konzept.
[Ein Frame auf der Baustelle] Herr A: "Diese Klasse und die Methode dieser Klasse sind genau gleich." Herr B: "Ah, wenn Sie dann eine Elternklasse erstellen und zusammenstellen, können Sie doppelte Codes reduzieren." Ich: "Es ist lächerlich !!!"
Korrekt.
Nein, ich denke es ist ein guter Ausgangspunkt. Wenn jedoch [is-a], das wichtigste Konzept bei der Vererbung, weggelassen wird, ist es absolut nutzlos. [is-a] ist weder eine Dekoration noch ein Anfängerwort, es ist ein Konzept, das bei der Implementierung verwendet werden sollte. Sie können eine Klasse erstellen, die Sie nicht verstehen, weil Sie dies vernachlässigen.
Aber um klar zu sein, [is-a] ist zu abstrakt und es ist ziemlich schwierig, es auf Implementierungsebene fallen zu lassen, oder es gibt individuelle Unterschiede ...
Ich werde also eine bestimmte Methode der Beurteilung einführen, also hoffe ich, dass Sie sich darauf beziehen können.
Versteh mich nicht falsch, es benutzt es nicht, es ist gebrauchsfertig. Natürlich dürfen Sie es nicht verwenden. Wenn Sie es also verwenden möchten, beurteilen Sie bitte, ob es gebrauchsfertig ist. Wenn dies getan wird, kann gesagt werden, dass es sich um eine [is-a] Beziehung handelt. Wenn Sie also eine untergeordnete Klasse erstellen möchten, prüfen Sie zunächst, ob sie sich in diesem Zustand befindet.
Schützen Sie das trotzdem! Wenn Sie es nicht behalten können, schreiben Sie einen Test! (Weil ich es beschützen muss) Es gibt zu viele Methoden mit mehrdeutigem Ein- und Aussteigen. Außerdem ist es zu schmerzhaft, dies zu reparieren. Ich möchte wirklich, dass Sie es schützen. Ich kann nicht einmal einen Test schreiben. Ernsthaft scharf Ah.
Es gibt nichts anderes zu schreiben, aber machen Sie es bitte zu einer Methode, die beantwortet werden kann, wenn Sie gefragt werden: "Was sind die Ein- und Ausgänge dieser Methode?"
Um genauer zu sein, führen Sie die folgende Verarbeitung nicht mit einer Methode durch. [Ich habe einige Berechnungen durchgeführt → das Berechnungsergebnis speichern] Es bedeutet, das Berechnungsergebnis zurückzugeben und beim Anrufer zu speichern.
Dies ist auch ziemlich häufig. Warum hört es nicht auf, obwohl es angefangen hat?
Es ist nicht nur Start und Stopp, sondern es gibt Methoden, die gepaart werden sollten. Gibt es nicht eine Klasse, die vom Konstruktor der Instanz ausgeht und von außen stoppt?
Machen Sie Ihren Code trotzdem konsistent.
Der Offenlegungsbereich ist eng, die Einschränkungen sind stark und ich möchte freundlich sein Machen Sie alle Kaku-Methoden privat. Danach veröffentlichen Sie bitte nur das, was Sie brauchen. Es ist wirklich schwer zu erkennen, ob Sie etwas veröffentlichen, das nur in der Klasse verwendet wird. Die Eigenschaft ist zuerst readOnly, und wenn sie immer noch nicht funktioniert, schreiben Sie sie.
Alle Variablen sind ebenfalls const und Methodenargumente sind ebenfalls const. Begrenzen Sie alles, was eingeschränkt werden kann.
Rufen Sie den Rückruf nicht in einer Methode auf, die eine Logik enthält.
In diesem Fall senden Sie den Rückruf an den Anrufer zurück. Dies bedeutet, dass der vom Kind an das Elternteil zurückgegebene Teil nicht mit der Logik verflochten ist.
(Tweet) Wie hieß der Code, der die Logik nicht geschrieben und nur den Wert übergeben hat? Ich hatte einen Namen, aber ich habe ihn vergessen. Bitte schreibe ihn in die Kommentare, wenn du ihn verstehst.
**2017/03/16 Ich habe Hatebu gebeten, etwas wie "Ich weiß nicht" zu schreiben. Als ich es rezensierte, dachte ich "Das stimmt", also fügte ich es unten hinzu. Ich war damals so wütend, dass ich viel geschrieben habe www **
Zum Beispiel Angenommen, Sie haben Berechnung 1, Berechnung 2 und Berechnung 3. Angenommen, Sie möchten im Rückruf "Berechnung 1 + Berechnung 2 + Berechnung 3" zurückgeben. Mach es auf eine Weise
//Da es sich um einen Rückruf handelt, wird er asynchron zurückgegeben.
Alle Berechnungsergebnisse{
return [Berechnung 1+Berechnung 2+Berechnung 3]
}
nicht
Berechnung 1 Ergebnis{
Rückgabeberechnung 1
}
Ergebnis von Berechnung 2{
Rückgabeberechnung 2
}
Berechnung 3 Ergebnis{
Rückgabeberechnung 3
}
//Da es sich um einen Rückruf handelt, wird er asynchron zurückgegeben.
Alle Berechnungsergebnisse{
return [Berechnung 1 Ergebnis+Ergebnis von Berechnung 2+Berechnung 3 Ergebnis]
}
Es bedeutet zu schreiben.
Warum fragst du? Geht es darum, welcher Testcode einfacher zu schreiben ist? Rückrufe sind asynchron, daher ist es schwierig, sie mit Logik zu testen, oder?
Ich bin erschöpft, wie geschrieben steht. In dem Code, den ich gesehen habe, war die übergeordnete Instanz in der Beziehung [has-a] ein Singleton, und die untergeordnete Instanz stürzte sich in die Eigenschaften der übergeordneten Instanz, die sie im Singleton erhalten hatte.
Sie müssen keine Eigenschaft haben, die direkt auf das übergeordnete Element verweist. Dies ist eine gegenseitige Referenz
In dem Kommentar, den ich neulich gesehen habe, war so etwas.
//Auf Hauptthread ausführen
Als ich das sah, murmelte ich: "Warum?" In einem Wort
darüber.
Hier ist ein gutes Beispiel für diesen Kommentar.
//Wird vom Hauptthread aufgerufen, da am Aufrufziel eine Zeichenverarbeitung stattfindet.
Das Folgende ist ein Beispiel für einen Kommentar mit Gedanken
//Ich bin mir nicht sicher, aber als ich es im Hauptthread aufrief, stürzte es nicht mehr ab.
Wenn Sie sich diesen Kommentar ansehen, können Sie das Niveau des Ingenieurs spüren und verstehen, dass es in Ordnung ist, ihn zu korrigieren, sodass jeder, der die Ursache kennt, ihn korrigieren kann.
Warum sehen Sie die folgenden Kommentare nicht noch einmal?
//Auf Hauptthread ausführen
Sie können nichts tun, wenn Sie nicht wissen warum. In diesem Fall erhöhen die Kommentare die Menge an Code, die Sie nicht verstehen.
Nachtrag 16. August 2016 Ich habe einen Kommentar erhalten, den ich von einer Person auf der vorherigen Website geschrieben habe, die diesen Beitrag gesehen hat. Deshalb werde ich ihn hier vorstellen. W.
# koitaro 2015/09/14
# Thread.current[:request]Durch Eintauchen der URL in und ob sie einen Schritt enthält
#Das Urteil ist geteilt, aber da es sich um eine sogenannte globale Variable handelt, ist es nicht gut, sie so zu schreiben
#Deshalb habe ich versucht, es irgendwie umzugestalten, aber es ist tief verschachtelt und wird verwendet.
#Deshalb habe ich aufgegeben, weil ich es nicht einfach verbessern konnte.
#Warten Sie auf den Tag, an dem der Held erscheint
Recommended Posts