Anstatt einen formalen Modus zur Definition von Einfachheit zu betrachten, möchte ich Einfachheit eher als ein Attribut der Qualität des Code-Schreibens definieren.
Ich lege kein Maß an Einfachheit an, aber wann nennst du etwas Einfaches oder nicht?
1. Code Traversal:
Wie einfach ist es, durch den Code zu navigieren? Ist es leicht zu erkennen, wo die API-Funktionen geschrieben sind? Ist es einfach, Anrufabläufe zu verstehen, z. B. welche Methoden andere aufrufen (und warum) - sind gute Zustandsautomaten implementiert oder Algorithmen sauber identifiziert?
Wenn die Codeüberquerung einfach ist, ist der Code einfach zu befolgen.
2. Benennung
Während andere Codierungsstandards dazu beitragen, dass der Code übersichtlicher aussieht, ist die Benennung von Klassen / Objektinstanzen / Variablen / Methoden das Wichtigste. Die Verwendung klarer und eindeutiger Namen hat eindeutig einen großen Einfluss auf die Einfachheit des Codes. Wenn es schwierig ist, einen einfachen Namen zu identifizieren, ist dies ein Zeichen dafür, dass Sie die Idee dieser Variablen / Methode überdenken möchten.
3. Interpretation und Referenzen
Hat jede Ihrer Methoden eine klare Rolle zu spielen. Sind die einzelnen Variablen / Attribute leicht zu bestimmen, welche Rolle sie spielen? Wenn ein Teil des Codes etwas tut, das Annahmen impliziert oder sich auf nicht verwandte Variablen auswirkt, kann dies zu einem Alptraum für die Wartung werden.
4. Abhängigkeit oder Kopplung
Dies ist nur anhand des Codes schwer zu beurteilen, wird jedoch sehr deutlich, wenn jemand versucht, Ihre Fehler zu beheben. Wenn sich einige andere Dinge in einem anderen Objekt ändern, ändert sich die Operation hier? Sind diese Änderungen offensichtlich? Müssen Sie die API so oft ändern, um Inhalte aufzunehmen? Dies legt nahe, dass Intermodulbeziehungen nicht einfach sind
5. Benutzereingaben oder Anwendungen
Wie einfach sind die Benutzereingaben oder Anwendungen, die auf der API / UI akzeptiert werden? Wenn Sie mehrere mögliche Benutzer / Anwendungen (für verschiedene Zwecke) angeben müssen - liegen sie auf der Hand? Gibt es Zustände / Details, die sich nicht auf die höhere Abstraktion beziehen, aber dennoch die Schnittstelle hin und her bewegen?
Eine einfache Frage, die ich im Allgemeinen stellen würde, lautet wie folgt: Wenn ich anstelle eines Programms die gleiche von einem Menschen auszuführende Funktion gewünscht hätte, hätte ich diese Informationen auf einem Papierformular ausgefüllt ? Wenn nicht, bin ich hier nicht einfach genug.
Ich werde nicht sagen, dass diese Liste vollständig ist, aber ich denke, Kriterien sind, wie einfach oder schwierig es ist, die Software zu verwenden und zu modifizieren. Das ist einfach