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.

Weipeng L
quelle
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
Rechnung
quelle
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.

Patrick Desjardins
quelle
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.

Preston Guillot
quelle
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.

Georgi
quelle
Ä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.

Dima
quelle
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

Ryszard Szopa
quelle
Ob in der Implementierung oder im Design.
16

Das Rad nicht neu erfinden.

Patrick Desjardins
quelle
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!

OscarRyz
quelle
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.

Brian M. Hunt
quelle
12

Wissen, wann nicht zu programmieren.

ctrlShiftBryan
quelle
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.

user9282
quelle
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.

Raz
quelle
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

Chris Vest
quelle
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)

Michael Easter
quelle
5

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

CrashCodes
quelle
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.
Dov Wasserman
quelle
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.

mh
quelle
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!

torial
quelle
4

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

Audun
quelle
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.

Mike Hofer
quelle
3

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

Joshua
quelle
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

Kennen Sie Ihre Werkzeuge.

dmckee
quelle
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 .

S.Lott
quelle
3

Schreiben Sie den Code für den nächsten Mann.

Gabriel Isenberg
quelle
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

Amy
quelle
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.

Bill the Lizard
quelle
2

Alles dreht sich um den Benutzer.

Bryan Oakley
quelle
2

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

HLGEM
quelle
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.

Problematisch
quelle
2

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

mea
quelle