Dies mag vor einigen Jahren eine schwierige Frage gewesen sein, aber es ist heutzutage nicht mehr schwierig, die zufällige Komplexität zu beseitigen.
Was Kent Becksaid irgendwann über sich selbst sagte: "Ich bin kein großartiger Programmierer, ich bin nur ein guter Programmierer mit großartigen Gewohnheiten."
Zwei Dinge sind es wert, hervorgehoben zu werden, IMO: Er sieht sich als Programmierer , nicht als Architekt, und sein Fokus liegt auf Gewohnheiten, nicht auf Wissen.
Feynmans Art, schwierige Probleme zu lösen, ist der einzige Weg, dies zu tun. Die Beschreibung ist nicht unbedingt leicht zu verstehen, deshalb werde ich sie analysieren. Feynmans Kopf war nicht nur voller Wissen, sondern auch voller Fähigkeit, dieses Wissen anzuwenden. Wenn Sie sowohl über das Wissen als auch die Fähigkeiten verfügen, um es anzuwenden, ist die Lösung eines schwierigen Problems weder schwierig noch einfach. Es ist das einzig mögliche Ergebnis.
Es gibt eine völlig unmagische Art, sauberen Code zu schreiben, der keine zufällige Komplexität enthält, und sie ähnelt größtenteils der Vorgehensweise von Feynman: Erwerben Sie alle erforderlichen Kenntnisse, trainieren Sie, um sich daran zu gewöhnen, ihn in die Praxis umzusetzen, anstatt ihn einfach verstauen zu lassen Schreiben Sie in einer Ecke Ihres Gehirns sauberen Code.
Viele Programmierer sind sich nicht einmal des Wissens bewusst, das zum Schreiben sauberen Codes erforderlich ist. Jüngere Programmierer neigen dazu, Wissen über Algorithmen und Datenstrukturen zu verwerfen, und die meisten älteren Programmierer neigen dazu, es zu vergessen. Oder große O-Notation und Komplexitätsanalyse. Ältere Programmierer neigen dazu, Muster oder Codegerüche zu verwerfen - oder gar nicht zu wissen, dass sie existieren. Die meisten Programmierer jeder Generation, auch wenn sie sich mit Mustern auskennen, erinnern sich nie an den genauen Verwendungszeitpunkt und die Treiberteile. Nur wenige Programmierer jeder Generation bewerten ihren Code ständig anhand der SOLID-Prinzipien. Viele Programmierer mischen überall alle möglichen Abstraktionsebenen. Ich kenne vorerst keinen Programmierkollegen, der seinen Code ständig anhand der von Fowler in seinem Refactoring-Buch beschriebenen Stenches bewertet. Obwohl einige Projekte ein Metrik-Tool verwenden, ist die am häufigsten verwendete Metrik die Komplexität der einen oder anderen Art, während zwei andere Metriken - Kopplung und Kohäsion - weitgehend ignoriert werden, auch wenn sie für sauberen Code sehr wichtig sind. Ein weiterer Aspekt, den fast jeder ignoriert, ist die kognitive Belastung. Nur wenige Programmierer betrachten Komponententests als Dokumentation, und noch weniger sind sich bewusst, dass schwer zu schreibende oder zu benennende Komponententests ein weiterer Code-Gestank sind, der in der Regel auf schlechtes Factoring hinweist. Eine winzige Minderheit ist sich des Mantras des domänengetriebenen Designs bewusst, um das Codemodell und das Geschäftsdomänenmodell so nah wie möglich beieinander zu halten, da Unstimmigkeiten später Probleme verursachen können. All dies muss immer berücksichtigt werden, wenn Sie Ihren Code bereinigen möchten. Und viele mehr, an die ich mich momentan nicht erinnern kann. Die am häufigsten verwendete Metrik ist die Komplexität der einen oder anderen Art, während zwei andere Metriken - Kopplung und Kohäsion - weitgehend ignoriert werden, auch wenn sie für sauberen Code sehr wichtig sind. Ein weiterer Aspekt, den fast jeder ignoriert, ist die kognitive Belastung. Nur wenige Programmierer betrachten Komponententests als Dokumentation, und noch weniger sind sich bewusst, dass schwer zu schreibende oder zu benennende Komponententests ein weiterer Code-Gestank sind, der in der Regel auf schlechtes Factoring hinweist. Eine winzige Minderheit ist sich des Mantras des domänengetriebenen Designs bewusst, um das Codemodell und das Geschäftsdomänenmodell so nah wie möglich beieinander zu halten, da Unstimmigkeiten zwangsläufig später zu Problemen führen. All dies muss immer berücksichtigt werden, wenn Sie Ihren Code bereinigen möchten. Und viele mehr, an die ich mich momentan nicht erinnern kann. Die am häufigsten verwendete Metrik ist die Komplexität der einen oder anderen Art, während zwei andere Metriken - Kopplung und Kohäsion - weitgehend ignoriert werden, auch wenn sie für sauberen Code sehr wichtig sind. Ein weiterer Aspekt, den fast jeder ignoriert, ist die kognitive Belastung. Nur wenige Programmierer betrachten Komponententests als Dokumentation, und noch weniger sind sich bewusst, dass schwer zu schreibende oder zu benennende Komponententests ein weiterer Code-Gestank sind, der in der Regel auf schlechtes Factoring hinweist. Eine winzige Minderheit ist sich des Mantras des domänengetriebenen Designs bewusst, um das Codemodell und das Geschäftsdomänenmodell so nah wie möglich beieinander zu halten, da Unstimmigkeiten später Probleme verursachen können. All dies muss immer berücksichtigt werden, wenn Sie Ihren Code bereinigen möchten. Und viele mehr, an die ich mich momentan nicht erinnern kann. Zwei andere Metriken - Kopplung und Kohäsion - werden weitgehend ignoriert, auch wenn sie für sauberen Code sehr wichtig sind. Ein weiterer Aspekt, den fast jeder ignoriert, ist die kognitive Belastung. Nur wenige Programmierer betrachten Komponententests als Dokumentation, und noch weniger sind sich bewusst, dass schwer zu schreibende oder zu benennende Komponententests ein weiterer Code-Gestank sind, der in der Regel auf schlechtes Factoring hinweist. Eine winzige Minderheit ist sich des Mantras des domänengetriebenen Designs bewusst, um das Codemodell und das Geschäftsdomänenmodell so nah wie möglich beieinander zu halten, da Unstimmigkeiten zwangsläufig später zu Problemen führen. All dies muss immer berücksichtigt werden, wenn Sie Ihren Code bereinigen möchten. Und viele mehr, an die ich mich momentan nicht erinnern kann. Zwei andere Metriken - Kopplung und Kohäsion - werden weitgehend ignoriert, auch wenn sie für sauberen Code sehr wichtig sind. Ein weiterer Aspekt, den fast jeder ignoriert, ist die kognitive Belastung. Nur wenige Programmierer betrachten Komponententests als Dokumentation, und noch weniger sind sich bewusst, dass schwer zu schreibende oder zu benennende Komponententests ein weiterer Code-Gestank sind, der in der Regel auf schlechtes Factoring hinweist. Eine winzige Minderheit ist sich des Mantras des domänengetriebenen Designs bewusst, um das Codemodell und das Geschäftsdomänenmodell so nah wie möglich beieinander zu halten, da Unstimmigkeiten später Probleme verursachen können. All dies muss immer berücksichtigt werden, wenn Sie Ihren Code bereinigen möchten. Und viele mehr, an die ich mich momentan nicht erinnern kann. Ein weiterer Aspekt, den fast jeder ignoriert, ist die kognitive Belastung. Nur wenige Programmierer betrachten Komponententests als Dokumentation, und noch weniger sind sich bewusst, dass schwer zu schreibende oder zu benennende Komponententests ein weiterer Code-Gestank sind, der in der Regel auf schlechtes Factoring hinweist. Eine winzige Minderheit ist sich des Mantras des domänengetriebenen Designs bewusst, um das Codemodell und das Geschäftsdomänenmodell so nah wie möglich beieinander zu halten, da Unstimmigkeiten später Probleme verursachen können. All dies muss immer berücksichtigt werden, wenn Sie Ihren Code bereinigen möchten. Und viele mehr, an die ich mich momentan nicht erinnern kann. Ein weiterer Aspekt, den fast jeder ignoriert, ist die kognitive Belastung. Nur wenige Programmierer betrachten Komponententests als Dokumentation, und noch weniger sind sich bewusst, dass schwer zu schreibende oder zu benennende Komponententests ein weiterer Code-Gestank sind, der in der Regel auf schlechtes Factoring hinweist. Eine winzige Minderheit ist sich des Mantras des domänengetriebenen Designs bewusst, um das Codemodell und das Geschäftsdomänenmodell so nah wie möglich beieinander zu halten, da Unstimmigkeiten später Probleme verursachen können. All dies muss immer berücksichtigt werden, wenn Sie Ihren Code bereinigen möchten. Und viele mehr, an die ich mich momentan nicht erinnern kann. s Mantra, um das Codemodell und das Geschäftsdomänenmodell so nah wie möglich beieinander zu halten, da Unstimmigkeiten zwangsläufig später zu Problemen führen. All dies muss immer berücksichtigt werden, wenn Sie Ihren Code bereinigen möchten. Und viele mehr, an die ich mich momentan nicht erinnern kann. s Mantra, um das Codemodell und das Geschäftsdomänenmodell so nah wie möglich beieinander zu halten, da Unstimmigkeiten zwangsläufig später zu Problemen führen. All dies muss immer berücksichtigt werden, wenn Sie Ihren Code bereinigen möchten. Und viele mehr, an die ich mich momentan nicht erinnern kann.
Sie möchten sauberen Code schreiben? Es ist keine Magie erforderlich. Lernen Sie einfach alles, was erforderlich ist, und verwenden Sie es, um die Sauberkeit Ihres Codes zu beurteilen und zu überarbeiten, bis Sie zufrieden sind. Und lernen Sie weiter - Software ist noch ein junges Gebiet, und neue Erkenntnisse und Kenntnisse werden schnell gewonnen.