Was ist gute Software Design, avilay

„Aber das ist nicht ein gutes Design ..“ ist ein Refrain ich in unzähligen Software-Design Treffen Argumente gehört haben. Und in der Regel diese Argumente zufallen ziemlich schnell in philosophischen Meinungsverschiedenheiten auf Überzeugungen statt Fakten. Es stellt sich natürlich die Frage - was ist gute Software-Design? Ich werde meine eigene Meinung zu diesem laufenden Diskurs mit 7 Design-Prinzipien des guten Software-Designs hinzuzufügen.







2. Robust
Ich zeige meine mad Codierung skillz in asp.net/mvc an einen Freund meiner Mine aus, die ein Software-Architekt sein geschieht. Er gab mir eine Art väterlichen Blick und sagte: „Das alles Spaß ist und gut, aber können Sie Code schreiben, der für viele Jahre weiterleben wird? Das Telefon, das Sie verwenden, hat ein Stück Code, den ich vor 5 Jahren schrieb“. Welche brachte mich zu meinem zweiten Epiphanie über gutes Software-Design. Seine bekam robust. Aber was bedeutet robust wirklich? Für mich bedeutet es, drei Dinge - Software zu Ausfällen resistent ist, es in der Lage ist zu erkennen, wenn Fehler auftreten, und es ist in der Lage sich zu erholen von failures.Good Software robust ist.

3. Messbare
Mein drittes Konstruktionsprinzip war kein plötzlicher a-ha Moment für mich. Sondern wuchs es auf mich allmählich, als Folge der in Umgebungen arbeiten, die waren extrem Daten getrieben, manchmal rücksichtslos so. Es sollte möglich sein, zu messen, wie die Software in der freien Natur zu tun geführt wird, außerhalb der Grenzen meiner Prüfvorrichtungen. Natürlich sind die tatsächlichen Messmetriken würde auf das Geschäft und die Art der Software unterschiedlich eingeschätzt werden. Eine oft verwendete Metrik für Web-Anwendungen ist die Anzahl der HTTP 500 ISEs die zurückgegeben werden. Für UI-basierten Anwendungen ist es in der Regel die Anzahl der Sekunden für die Benutzeroberfläche zu reagieren. Aber wenn man sich das Schreiben von Software ohne jeden Gedanken zu setzen, wie sie zu messen (was auch immer Maßnahme bedeutet für Sie), wissen, dass Sie ein gutes Design-Prinzip verletzen. Gute Software ist messbar.







4. Debuggable
Ich erinnere mich an den Tagen, als Entwickler arbeiten in einem E-Commerce-Unternehmen (ja, dass man), wo bekommt ich ausgelagert würde, weil das Bestellsystem wurde misbehaving. Ich würde die einzige Entwickler das Debuggen des Live-Systems sein, alle durch ein Bündel von Manager-Typen umgeben Zeit, die „Status“ jede Sekunde Minute verlangen würde. Ein Spaziergang durch den Code in dieser Situation war - um es milde auszudrücken - nicht Spaß. Und es brachte mich zu Hause der Erkenntnis, dass jede Software, die ich Protokollierung schreiben sollte, die nicht nur dort für das Heck von ihm ist, aber das würde wirklich hilft mir Debug, wenn die Notwendigkeit entstanden ist. Seitdem habe ich auf meiner Web-Dienste, setzen in Fähigkeit Debug in Debug-APIs setzen Zustand bei Bedarf zu entleeren, etc. Gute Software ist debug.

6. Wiederverwendbare
Software-Entwickler befürchten unaufhörlich wiederverwendbare Software zu schreiben. Viele Software-Entwickler-Interviews, die ich in gesessen haben (als Beobachter, Interviewer, Interviewten) stellen immer einen Algorithmus Frage - „Wie kann man das kleinste gemeinsame ansector in einem Baum finden“, dann ist der Follow-up ist - „Wie kann man macht es allgemein“. Aber beachten Sie, dass diese # 6 auf meiner Liste ist. Das ist, weil generilizing eine spezifische Lösung schwierig und zeitraubend ist. Und eine Menge Zeit niemand endet das Stück Code Wiederverwendung sowieso (natürlich kann man argumentieren, dass es ist, weil der Code nicht wiederverwendbar genug war, um mit zu beginnen ...). Also, wenn Sie absolut sicher ist, dass Sie dieses Stück Funktionalität an anderer Stelle wiederverwendet werden, und Sie können die Mühe, die es wiederverwendbar zu machen gebunden Zeit, nicht versuchen, diese zu Hause. Dennoch ist eine gute Software wiederverwendbar.

7. Extensible
Überraschenderweise macht das Thema der maximalen Anzahl von Design-Argumente, die ich gesessen haben durch sie in meiner Liste zuletzt. Üblicherweise wird diese gebracht, wenn Sie Infrastruktur-Software bauen. Und es beginnt in der Regel mit - „aber annehmen, dass morgen jemand will X hier hinzufügen ...“. Seien Sie vorsichtig bei diesem Konstruktionsprinzip. Seien Sie sehr vorsichtig. Es sei denn, „morgen“ ein echtes Datum in der Zukunft ist, und „jemand“ ist eine reale Person, dies Bauprinzip können Sie führt an der Unterseite einen tiefen Kaninchenbau mit nichts als Schmutz nach unten. Aber ich habe zu sagen - wirklich gute Software erweiterbar ist.







In Verbindung stehende Artikel