Was ist für Sie das 1. Prinzip der Programmierung?


59

Ich habe mich immer gerne gefragt: "Was sind die ersten Prinzipien davon?" nachdem ich etwas grundlegendes gelernt habe (zB programmieren). Eine inspirierende Frage, IMO, die Sie dazu zwingen kann, über die wichtigsten Prinzipien nachzudenken, die hinter etwas stecken, insbesondere über Fähigkeiten wie das Programmieren.

Was ist Ihrer Meinung nach das erste Prinzip der Programmierung? Ich werde meine Antwort unten etwas später geben.


Wir reden nicht über Kampfverein.
Job

Antworten:


97
  1. KISS - Mach es einfach dumm
  2. TROCKEN - Wiederholen Sie sich nicht
  3. YAGNI - Du wirst es nicht brauchen

KISS sollte Keep It Simple Smart sein. Wenn Sie zum ersten Mal einen großen Teil Ihres Codes neu schreiben müssen, weil Sie nicht intelligent und erweiterbar entworfen haben, werden Sie dem zustimmen. :)

8
Ich denke, KISS sollte "Keep It Simple, Dummkopf!" Sein.
Dennis C

Ich arbeite eigentlich auf einem Blog - Post darüber , wie diese beiden sind die beiden am meisten am Herzen ein Programmierer Herz und wie zugleich sie so oft ein bisschen oxymorons sind mal Sie einen gegen den anderen wählen müssen

10
Ich würde auch YAGNI hinzufügen.

3
@Programmin Tool - Ich halte "dumm" nicht für überflüssig. Ich denke, es zeigt, dass wir die Tendenz haben, "schlau" sein zu wollen, und dies manifestiert sich als nicht benötigte Komplexität. Wie ich es sehe, versucht das "Dumme" uns an diese Tendenz zu erinnern, indem es uns hilft, uns daran zu erinnern, was wir anfangs für "klug" halten, ist normalerweise nicht.
Codekaizen

37

Schreiben Sie Code, als müssten Sie diesen Code pflegen.


Dies ist eine sehr praktische Heuristik, 3x :)

19
Schreiben Sie Code, als müsste ihn ein Axt schwingender Psycopath pflegen. FTFY.
Vergessenes Semikolon

10
... und der axtschwingende Psychopath weiß, wo Sie wohnen.
CAD Kerl

2
.., und er hat gerade seine Axt geschärft ...
Roalt

1
... und er arbeitet an deiner Seite.
Broken_Window

29

Sei so faul wie möglich.


2
Wieder zu allgemein, IMO. Dies wirft die Frage auf, "Wie faul ist eigentlich die angemessene Menge an Faulheit?", Denn "schlampig" ist offensichtlich etwas, das Sie auch nicht sein möchten.

Dies ist ein Hinweis auf Perls "Faulheit, Ungeduld und Hybris"

Also reden wir über eine andere Art von Faulheit? Ich dachte "faul" Bob bedeutet "

2
Zu allgemein. Nach dieser Analogie wären alle Variablen und Funktionen ein Buchstabe, weil ich zu faul war, um etwas Sinnvolles einzutippen. Vorausgesetzt, ich musste es auch pflegen, dann haben Sie vielleicht Recht, denn ich würde es so leicht wie möglich pflegbar machen.
Kyle Ballard

3
@ Kyle: Ja, das ist der Punkt. "Wahre Faulheit" macht es sich jetzt und in Zukunft am einfachsten. Was sich als das Gleiche herausstellt, als würde man die Dinge richtig machen. Wenn Sie jetzt weniger arbeiten, aber später mehr, sind Sie nicht "so faul wie möglich" :)

23

Zen, Teil I: Programmieren ist nur der Weg, nicht der Weg.

Programmieren ist nur die Technik, um einem Computer beizubringen, was er tun muss. Um bei der Erstellung schneller, zuverlässiger Software erfolgreich zu sein, müssen Sie Ihre Algorithmen, Best Practices und alle anderen Dinge kennen, die nicht unbedingt mit Ihrer Programmierung (Sprache) zusammenhängen.

Zen, Teil II: Wenn Sie es eilig haben, spazieren Sie langsam entlang. Wenn Sie es wirklich eilig haben, machen Sie einen Umweg.

Klingt albern, aber lassen Sie sich nicht auf Kompromisse ein, die Sie (wirklich) später stören könnten. Ich habe eine Regel: Wenn Sie im Kern eines Programms sind, versuchen Sie, so präzise und gut wie möglich zu sein. Wenn Sie Methoden aus dem Kern verwenden, die tief in Ihrer Software liegen, versuchen Sie, schneller zu codieren. Wenn Sie über diesen beiden codieren, können Sie sogar etwas schlampiger werden.

Konstruktionsfehler sind am schwierigsten zu finden und / oder zu beheben. Der nächste Schritt sind Programmierfehler in Teilen, auf die sich jeder verlässt, und dann die "echten vorzeigbaren Softwareteile". Wenn Sie am Ende eines Projekts einen Konstruktionsfehler beheben müssen, ähm, das ist nicht gut ... ;-)

Zen, Teil III: Kenne deinen Weg, Neo.

Kennen Sie Ihre Umgebung, Werkzeuge und das, worauf Sie sich täglich verlassen, und sortieren Sie es so, dass es für Sie funktioniert. Am besten, Sie verwenden Ihre Programmier- "Umgebung" so natürlich, dass Sie nicht einmal daran denken müssen. Wenn Sie einen Job erledigen müssen, stellen Sie nicht "schickes neues Zeug" vor, sondern erledigen Sie Ihre Arbeit. Dieses Zeug kann in ein neues Projekt eingefügt werden, und zwar dann, wenn Sie Zeit haben, es vorzubereiten und zu verwenden.


Äh, und dann nochmal: Ich bin im Zen-Land gelandet, als ich über Programmierung gesprochen habe :)

@part III - füge keine "ausgefallenen neuen Sachen" hinzu, es sei denn, du wirst dafür bezahlt!
Jason

+1 für die Matrixreferenz. Ich bin ein Trottel für einen guten (das und das Zen.

19

KISS (halte es einfach, dumm).

Es stellt sich in der Tat die Frage "Wie definieren Sie einfach?" Und auch "Wann ist etwas zu einfach für die anstehende Aufgabe?" Aus diesem Grund können Sie kein guter Programmierer werden, wenn Sie nur das erste Prinzip der Programmierung kennen.


Ich denke, das ist eine zu allgemeine Regel. Es stellt sich die Frage "Wie definieren Sie eigentlich" einfach "?".

3
und wenn du dumm bist, wie würdest du wissen, ob es einfach ist?
Steven A. Lowe

Das ist gut, Steven :)

1
"Deshalb kann man kein guter Programmierer werden, wenn man nur das erste Prinzip der Programmierung kennt" - liebe es.

1
@Dima: Sie haben recht, ich meine, dass Qualität und Einfachheit (zumindest in diesem Fall) nicht definierbar sind, aber wir wissen es, wenn wir es sehen, wenn unsere Augen geschult sind.
Adriano Varoli Piazza

18

Vorzeitige Optimierung ist die Wurzel allen Übels. - Donald Knuth


Ob in der Implementierung oder im Design.

16

Das Rad nicht neu erfinden.


Die richtige Antwort auf die Frage, ob man das Rad neu erfinden soll oder nicht, ist immer "es kommt darauf an". Also "erfinde das Rad nicht neu" geht nur so weit. Es kann die meiste Zeit als gute Heuristik dienen, aber nicht jedes Mal.

5
Einige "Räder" müssen neu erfunden werden.

Sagen Sie das Dunlop. Er erfand den Luftreifen. Wenn er nicht wäre und das Rad neu erfinden würde, hätten wir eine ziemlich holprige Fahrt.
Kibbee,

3
Wie wäre es: Das Rad nur neu erfinden, wenn die Vorteile die Kosten wert sind
e.James

16

Verstehe zuerst das Problem!


Ah, endlich jemand mit diesem. Du kannst küssen, yagni, trockne alles was du willst. Es ist sinnlos, wenn Sie etwas für nichts programmieren.

@ e-satis: Ja, das habe ich mir gedacht, als ich das zum ersten Mal beantworte. Ich scrolle nach der ganzen Antwort und überraschenderweise hat noch niemand etwas geschrieben.
OscarRyz

Gute Antwort. Viele Stunden werden verschwendet, wenn Programmierer die Anforderungen eines Problems nicht richtig verstehen.
Steve Wortham

Das Problem ist: Woher weißt du, dass du das Problem verstehst?
CamelCamelCamel

13

YAGNI - Du wirst es nicht brauchen . Die Idee hinter YAGNI ist es, für Ihre Anforderungen zu programmieren, nicht für zukünftige, potenzielle Funktionen. Die Prämisse ist, dass Sie (unter anderem) durch die Einhaltung der Programmieranforderungen den Code aufblähen, die Komplexität reduzieren, das Durchsickern von Funktionen vermeiden und die Einschränkungen für das, was in der Datenbank ausgeführt werden kann (und wie dies ausgeführt werden kann), verringern Zukunft.

Ich nehme an, es funktioniert zusammen mit dem modularen Design: Zukünftige Features können erweitert werden, ohne den vorhandenen Code neu zu entwerfen.


12

Wissen, wann nicht zu programmieren.


was um alles in der welt soll das heißen

Und wann ist das?

Manchmal müssen Sie ein Benutzerproblem anders angehen - und nicht nur eine Lösung programmieren.

Menschliches Urteilsvermögen und Entscheidungsfindung sind Teil von allem; Manchmal macht es keinen Sinn, das Urteil zu automatisieren.
S.Lott

1
Er meint damit, dass viele Programmierprobleme durch den Kauf von Standardanwendungen, -komponenten oder -bibliotheken billiger und schneller gelöst werden können.
Gordon Bell

11

Kaffee rein, Code raus.


3
Tee in meinem Fall =)

+1 hmm eher wie "Coffee In, Code + viele Klopausen?" :) Ich liebe Kaffee und Tee, ich schwinge in beide Richtungen ...
Darknight

10

Wenn es nicht getestet wurde, ist es kaputt.


Ich bin damit einverstanden

7

Es gibt zwei Möglichkeiten, ein Software-Design zu erstellen: Eine Möglichkeit besteht darin, es so einfach zu gestalten, dass es offensichtlich keine Mängel gibt, und die andere darin, es so kompliziert zu gestalten, dass es keine offensichtlichen Mängel gibt. Die erste Methode ist weitaus schwieriger.

- Charles Antony Richard Hoare


6
  1. Unterscheiden zwischen Ursache und Wirkung (Arbeiten mit Computern)

  2. Unterscheiden zwischen Fakten und Meinungen (Arbeiten mit Menschen)

  3. So einfach wie möglich, aber nicht einfacher (Design)


5

Programmieren ist ein Mittel, kein Ziel. Oder vielleicht: "Kann heißt nicht sollte."


5
  1. Verstehe, warum das Programm jemanden glücklich macht (ansonsten, warum spielst du nicht draußen mit all den anderen Kindern?). (Diese Person kann du sein.)
  2. Entwickeln Sie ein konzeptionelles Modell des Geschäftsbereichs , das die gesamte erforderliche Komplexität erfasst, und nicht mehr.
  3. Entwickeln Sie ein konzeptionelles Modell der Softwarearchitektur , das die gesamte erforderliche Komplexität erfasst, und nicht mehr.
  4. Halten Sie rücksichtslos jede andere Komplexität fern.

gut gesagt! stimme nicht mehr zu
Antony

5

Meiner Meinung nach ist das wichtigste Prinzip die Reduzierung der Komplexität durch die Schaffung guter Abstraktionen .

Das beinhaltet

  • Verständnis des zu lösenden Problems,
  • eine passende Lösung dafür zu entwerfen und
  • Implementierung,
  • vorzugsweise so, dass der Code verständlich und wartbar bleibt,

sondern auch die Bestimmung des Punktes, an dem die Erstellung von Abstraktionen eingestellt und die grundlegenden Eigenschaften der Implementierungstechnologien (z. B. Datenbanksystem, Programmiersprache) ermittelt werden müssen, um die Entstehung vermeidbarer zusätzlicher Komplexität zu verhindern.


4

Programm mit Blick auf das Publikum. Gehen Sie dabei nicht davon aus, dass etwas, das Sie schreiben, nicht von Ihnen oder einer anderen Person gelesen und gepflegt wird.

Eine Konsequenz daraus: Beweisen Sie, dass Sie das zu lösende Problem verstehen, indem Sie Ihre Variablen, Funktionen und Klassen gut benennen!


4

es funktioniert erst, wenn Sie es in einem Test gezeigt haben


6
Das stimmt nicht, ich habe Tonnen von Code geschrieben, der funktioniert und nicht getestet wurde! : D

1
"Ich habe es nicht getestet, ich habe nur bewiesen, dass es richtig ist" :)
Daniel Daranas

4

Zuerst überlegen, später programmieren.

Du bist bei weitem nicht so schlau, wie du denkst. Fragen stellen. Lernen Sie, Ihre Kollegen zu schätzen.

Beim Debuggen ist die erste Antwort fast immer falsch.

Code, den Sie mit der Absicht schreiben, wegzuwerfen, wird in der Regel zu einem Eckpfeiler viel größerer Prozesse. Lassen Sie niemals etwas willkürlich geschrieben.


3

Jedes Problem kann mit einer anderen Indirektionsebene gelöst werden.


Tatsächlich ist es ein Problem, zu viele Indirektionen zu haben, die erst identifiziert und behoben werden müssen. Also ..

Gelöst ... durch eine andere Indirektionsebene! =)
Erik Forbes

Seltsamerweise ist es wahr. Schauen Sie sich den Frühling an ...


3

Prinzip: Software ist Wissenserfassung .

Konsequenzen: Viele Techniken zur Wissensrepräsentation, die alle auf Abstraktion basieren . Gibt uns Schichten, Schichten, Verkapselung, Trennung von Bedenken.

Viele Techniken zur Darstellung von Prozeduren, die alle auf Sequenz , Auswahl und Wiederholung basieren .



3

Schreiben Sie Code immer so, als ob die Person, die ihn wartet, ein psychotischer Serienmörder ist, der weiß, wo Sie leben

Denken Sie auch nie, Sie wissen alles über Programmierung, lernen Sie weiter


2

Ich bin durch das Studium der digitalen Elektronik in das Programmieren eingestiegen, daher schätze ich, dass die grundlegenden Logikgatter (nicht und oder oder impliziert) die ersten Prinzipien des Programmierens waren.



2

Garbage In - Garbage Out Es ist egal, wie schön Ihre Benutzeroberfläche ist, wenn die Daten schlecht sind.


2

DRY, so ziemlich alles andere entsteht daraus. KISS ist das andere Ende des Balanceakts, um sicherzustellen, dass Sie Software-Eleganz nicht bis zum Wahnsinn verfolgen.


2

Beginnen Sie mit der Ausgabe und arbeiten Sie rückwärts.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.