Bitte bleiben Sie bei technischen Fragen , vermeiden Sie Verhaltens-, Kultur-, Karriere- oder politische Probleme.
52
Bitte bleiben Sie bei technischen Fragen , vermeiden Sie Verhaltens-, Kultur-, Karriere- oder politische Probleme.
Antworten:
Der Fehler befindet sich in Ihrem Code, nicht im Compiler oder in den Laufzeitbibliotheken.
Wenn Sie einen Fehler sehen, der möglicherweise nicht auftreten kann, überprüfen Sie, ob Sie Ihr Programm ordnungsgemäß erstellt und bereitgestellt haben. (Insbesondere, wenn Sie eine komplizierte IDE oder ein Build-Framework verwenden, das versucht, die unübersichtlichen Details vor Ihnen zu verbergen ... oder wenn Ihr Build viele manuelle Schritte umfasst.)
Gleichzeitige / Multithread-Programme sind schwer zu schreiben und schwerer zu testen. Es ist am besten, so viel wie möglich an parallele Bibliotheken und Frameworks zu delegieren.
Das Schreiben der Dokumentation ist Teil Ihrer Arbeit als Programmierer. Überlassen Sie es nicht "jemand anderem".
BEARBEITEN
Ja, meine Nummer 1 ist übertrieben. Sogar die am besten entwickelten Anwendungsplattformen haben ihren Anteil an Fehlern, und einige der weniger gut entwickelten sind mit ihnen weit verbreitet. Aber auch so ist , sollten Sie Ihren Code immer den Verdacht zuerst , und starten Sie nur Compiler / Bibliothek Fehler Schuld , wenn Sie haben klare Hinweise darauf , dass der Code nicht fehlerhaft ist.
In den Tagen, in denen ich C / C ++ - Entwicklung durchgeführt habe, erinnere ich mich an Fälle, in denen vermeintliche Optimierungsfehler darauf zurückzuführen waren, dass ich / ein anderer Programmierer Dinge getan hatte, von denen die Sprachspezifikation sagt, dass sie undefinierte Ergebnisse haben. Dies gilt auch für vermeintlich sichere Sprachen wie Java. Schauen Sie sich beispielsweise das Java-Speichermodell (JLS, Kapitel 17) genau an.
quelle
quelle
Gleitkommaberechnungen sind nicht präzise.
quelle
Hör nicht auf zu lernen.
quelle
Das Wichtigste, was Sie tun können, um die Qualität und Wartbarkeit Ihres Codes zu verbessern, ist REDUCE DUPLICATION.
quelle
Fähigkeiten zur Fehlerbehebung und zum Debuggen
Sie verbringen kaum Zeit mit diesem Thema in einem der von mir belegten Programmierkurse, und meiner Erfahrung nach ist dies einer der wichtigsten Faktoren für die Produktivität eines Programmierers. Ob es Ihnen gefällt oder nicht, Sie verbringen viel mehr Zeit in der Wartungsphase Ihrer App als in der neuen Entwicklungsphase.
Ich habe mit soooooo vielen Programmierern zusammengearbeitet, die nach dem Zufallsprinzip Änderungen vorgenommen haben, ohne die Strategie, das Problem überhaupt zu finden. Ich habe dieses Gespräch Dutzende Male geführt.
Anderer Programmierer: Ich denke, wir sollten versuchen, zu sehen, ob es das behebt.
Ich: Okay, vorausgesetzt, das behebt es. Was sagt Ihnen das darüber, wo die Ursache des Problems liegt?
Anderer Programmierer: Ich weiß es nicht, aber wir müssen etwas ausprobieren .
quelle
quelle
Die Grundlagen. Derzeit lernen Programmierer Technologien und keine Konzepte. Es ist falsch.
quelle
Its wrong
sollteit's wrong
zum Beispiel sein.Jeder Programmierer sollte wissen, dass er ständig Annahmen in den Code einfügt, z.
Und er sollte wissen, dass er sich darauf vorbereiten sollte, wenn diese Annahmen brechen.
quelle
assert()
angeben - überall.assert()
wird Ihnen helfen, Ihre Annahmen zu dokumentieren und Sie zu retten, wenn Sie sich irren.Jeder Programmierer sollte über das Testen Bescheid wissen.
quelle
Konzepte lernen . Sie können die Syntax googeln.
quelle
Kritisches und logisches Denken. man kann nichts Gutes ohne es tun.
quelle
Unit Testing. Dies ist eine großartige Möglichkeit, Ihre Annahmen zur Verwendung des Codes zu kodifizieren.
quelle
Das absolute Minimum, das jeder Softwareentwickler unbedingt über Unicode und Zeichensätze wissen muss (keine Ausreden!) .
quelle
Das ist schwieriger als du denkst.
Während es einfach ist, etwas zusammenzustellen, das bei normaler Verwendung funktioniert, ist die Bewältigung fehlerhafter Eingaben, aller Rand- und Eckfälle, möglicher Fehlermodi usw. zeitaufwändig und wird wahrscheinlich der schwierigste Teil der Arbeit sein.
Dann muss die Anwendung auch noch gut aussehen.
quelle
Fachwissen. Die Spezifikation ist nie 100%; Die Kenntnis der tatsächlichen Domäne, für die Sie sich entwickeln, wird IMMER die Qualität des Produkts verbessern.
quelle
Big O-Notation und ihre Auswirkungen.
Einige nützliche Hinweise
quelle
Zeiger natürlich. :)
quelle
L = [[]] * 2; L[0].append(42)
Verschiedene Sprachen verwenden unterschiedliche Namen, aber die Umleitung ist überall wichtig.Code Complete 2 - Deckblatt zu Deckblatt
quelle
Daten sind wichtiger als Code.
Wenn Ihre Daten intelligent sind, kann der Code dumm sein.
Dummer Code ist leicht zu verstehen. Das gilt auch für intelligente Daten.
Fast jede algorithmische Trauer, die ich jemals hatte, war darauf zurückzuführen, dass Daten am falschen Ort waren oder ihre wahre Bedeutung missbraucht haben. Wenn Ihre Daten eine Bedeutung haben , geben Sie diese Bedeutung in das Typensystem ein .
quelle
Welche Sprache und Umgebung ist für den Job am besten geeignet? Und es ist nicht immer dein Favorit.
quelle
Teilen und Erobern. In der Regel ist dies der beste Weg, um alle praktischen Probleme von der Planung bis zum Debuggen zu lösen.
quelle
Echte Fähigkeiten spiegeln sich in der Fähigkeit wider, ein einfaches Design gut auszuführen, und nicht in der Fähigkeit, ein kompliziertes Design überhaupt zum Laufen zu bringen.
Diese Fähigkeit beruht auf einer größeren Beherrschung der Grundlagen, nicht auf der Beherrschung des Arkanen. Ein hochkarätiger Programmierer zeichnet sich nicht durch seine Fähigkeit aus, das zu codieren, was andere nicht können (mit Funktionen höherer Ebene, erweiterter funktionaler Programmierung, What-Have-You), sondern durch seine Fähigkeit, die profane Codierung perfekt zu verfeinern. Auswahl der geeigneten Aufteilung der Funktionalität zwischen Klassen; in Robustheit bauen; mit defensiven Programmiertechniken; und mit Mustern und Namen, die zu einer größeren Selbstdokumentation führen, sind dies die Basis für eine hochkarätige Programmierung.
Es ist von entscheidender Bedeutung, guten Code zu schreiben, auf den Sie oder eine andere Person in einer Woche pro Monat oder Jahr zurückgreifen können, um zu verstehen, wie dieser Code verwendet, geändert, erweitert oder erweitert wird. Das spart Ihnen Zeit und Mühe. Es schmiert die Räder der Produktivität, indem es Straßensperren beseitigt, über die Sie zuvor gestolpert wären (möglicherweise unterbricht es Ihren Gedankengang oder nimmt Ihnen Stunden oder Tage der Anstrengung von anderen Arbeiten usw.). Es erleichtert die Konzentration auf die schwierigen Probleme und manchmal lassen die schweren Probleme nach.
Mit einem Wort: Eleganz. Jede Klasse, jede Methode, jede Bedingung, jeder Block, jeder Variablenname: Streben nach Eleganz.
quelle
Beschuldigen Sie niemals den Benutzer, was mit einer saubereren Benutzererfahrung oder einer besseren Dokumentation behoben werden könnte. Oft nehmen Programmierer automatisch an, dass der Benutzer ein Idiot ist, der nichts richtig machen kann, wenn das Problem eine schlechte Gesamterfahrung oder mangelnde Kommunikation ist. Programme sind dazu gedacht, benutzt zu werden, und um den Benutzer mit Verachtung zu behandeln, ist es an erster Stelle, den Programmierpunkt zu verfehlen.
quelle
Jeder Programmierer sollte wissen, wie man den Debugger benutzt und wie man ihn gut benutzt .
quelle
Datenstrukturen
quelle
Wie benutze ich Google?
quelle
Kurzschlussauswertung, obwohl sie eines der ersten Dinge ist, die Sie über boolesche Operatoren lernen.
quelle
Wie Sie genau abschätzen können, wie lange die Implementierung eines Features dauern wird. Noch wichtiger ist, wie Sie vermitteln können, dass Sie nicht blödsinnig sind, wenn Sie diese Schätzung einreichen.
quelle
Auf den Codierungsstil kommt es an:
... und gutes Design ist wichtig.
Idealerweise lernt der Programmierer diese Dinge vor (oder während) seiner ersten Codeüberprüfung. Im schlimmsten Fall lernt der Programmierer sie, wenn der Chef ihn / sie auffordert, in Eile einige nicht triviale Änderungen an einem schrecklichen Code vorzunehmen.
quelle