Welche Teile von Code Complete haben den Test der Zeit nicht bestanden? [geschlossen]

14

Ich betrachtete Code Complete im Regal und dachte: "Außerhalb des Monats des mythischen Mannes ist dies möglicherweise eines der wenigen Bücher über Software-Engineering für den Massenmarkt, die den Test der Zeit bestehen." Aus diesem Grund überlege ich mir, es noch einmal durchzulesen.

Ich bin neugierig - hat jemand in letzter Zeit einen zweiten Blick darauf geworfen? Habt ihr gesehen, dass er sich sehr geirrt hat?

Dies ist kein Angriff und keine Bitte um eine Buchbesprechung - es interessiert mich mehr, welche Ideen sich im Laufe der Jahre geändert haben.

Und bitte - kein Kommentar zu "Demarco / Spewak / Zachman hat den Test der Zeit bestanden ..." Ich interessiere mich speziell für Code Complete, da es einen breiten Boden abdeckt und weitreichende Auswirkungen auf dem Feld hat.

MathAttack
quelle
1
Eine rasche Überprüfung hat mich an Ärger erinnert, bei denen der Text den Beispielen zu widersprechen scheint und verschiedene Teile des Buches unterschiedliche Ratschläge geben. Davon abgesehen scheint es immer noch ziemlich gut zu sein.
Izkata
@Izkata - Beispiele?
MathAttack
Als Antwort
hinzugefügt
1
Gute Frage, in letzter Zeit habe ich darüber nachgedacht, ob ich es noch einmal lesen soll. Ich frage mich, ob es Pläne für eine Neuauflage gibt.
Antonio2011a
2
Ich habe letzten Sommer Code Complete (2nd Edition) studiert und dort fühlte sich nichts veraltet an. Sofern sich in der Softwareentwicklung keine radikalen unerwarteten Änderungen ergeben, würde ich mir sicher fühlen, dass ich dieses Buch in mindestens fünf Jahren empfehlen kann.
gnat

Antworten:

11

Code Complete umfasst viele zeitlose Konzepte wie:

  • starker Zusammenhalt
  • lose Kopplung
  • gute Routinennamen
  • defensive Programmierung
  • selbstdokumentierender Code
  • Software-Bewertungen
  • Unit-Test

die heute sicherlich relevant sind.

Einige der in CC vertretenen Konzepte werden jetzt in neueren Sprachen syntaktisch durchgesetzt. In C # ist es beispielsweise nicht möglich, Variablen in Unterbereichen so zu definieren, dass eine Definition mit übergeordnetem Gültigkeitsbereich ausgeblendet wird.

Andere Konzepte, wie die ungarische Notation für Variablennamen, sind in der Mainstream-Programmierung auf der Strecke geblieben (obwohl alle, die noch mit der Win32-API arbeiten, vehement argumentieren werden, dass sie am Leben sind und gut funktionieren). Das eigentliche Konzept hinter der Namenskonvention für Variablen ist es jedoch, die notwendige Bedeutung zu vermitteln und den Code zu verdeutlichen. Konzepte, von denen ich behaupte, dass sie auch zeitlos sind.

Alles in allem kann ich mich daran erinnern (und einen kurzen Blick in meine ehrwürdige Kopie von CC werfen), dass es sich auf jeden Fall lohnt, sie zu überprüfen.

Ich glaube jedoch nicht, dass es zur wahrhaft zeitlosen Natur des Mythical Man Month aufsteigt. MMM befasst sich mit Fragen, wer die Arbeit macht, wie und warum sie es tut; sowie die Kosten und Komplexität der (menschlichen) Kommunikation. MMM spricht Themen an, die für alles, was wir tun, von grundlegender Bedeutung sind. Im Vergleich dazu konzentriert sich CC auf praktische und pragmatische Fragen, wie wir es tun. Anders ausgedrückt: Wenn ein Projekt im Verzug ist und ein Manager beschließt, 100 Mitarbeiter in das Team aufzunehmen, macht das Schreiben von verständlichem Code keinen großen Unterschied.

CC befasst sich nicht wirklich mit wichtigen Problemen, die unsere Branche belasten. Aber es bietet eine gute Grundlage für das Streben nach dem besten Ergebnis in einer oft unmöglichen Situation.

Ich würde sie beide sicherlich für erforderlich halten, um für alle zu lesen, denen die Softwareentwicklung am Herzen liegt. und ich würde empfehlen, MM immer dann erneut zu lesen, wenn Sie eine Auffrischung benötigen. CC ist es wert, erneut gelesen zu werden, wenn Sie ein Entwicklungsteam leiten, Gruppenstandards festlegen oder neuere Entwickler schulen. Abgesehen davon stelle ich persönlich fest, dass ich das Material vor langer Zeit in CC verinnerlicht und täglich geübt habe.

Hoffnungen, die helfen. Sie sind sicherlich zwei meiner Favoriten.

Robert Altman
quelle
Vielleicht sollte ich ein ähnliches Q für MM erstellen. Vielleicht hatte Brooks es leichter, seit er ein Management-Buch geschrieben hat.
MathAttack
Befasst sich CC nicht mit dem Thema "Wer macht die Arbeit" in Kapitel 33: Persönlicher Charakter?
mg1075
4

Insgesamt ist das Buch noch gut. Ich habe jedoch ein paar kleine Probleme damit:

  • In Kapitel 17 ("Ungewöhnliche Kontrollstrukturen") werden Guard-Anweisungen zwar als Rückkehr von einer Funktion erwähnt, die Beispiele in Kapitel 15 zu "if" -Anweisungen raten jedoch von Guard-Anweisungen ab. (Genannte Schutzklauseln / frühe Rückgaben im Buch)
  • Das Beispiel in Abschnitt 14.2 scheint sich zu widersprechen. Es gibt zunächst ein Beispiel für "schlechten" Code und wie man ihn "gut" macht. Anschließend wird angegeben, dass beim Gruppieren verwandter Anweisungen entweder nach Daten oder nach Aufgabenähnlichkeit "gut" wäre. Das "schlechte" Beispiel sollte dann auch als "gut" betrachtet werden - und ich denke, es ist viel einfacher zu lesen als das "gute" Beispiel, da alle Daten mit der gleichen Rate berechnet werden - es gibt weniger Zustand, den Sie im Kopf behalten müssen .
  • Kapitel 23, Debuggen, bei dem gedruckte Anweisungen in einem Aufzählungspunkt zusammengefasst sind. Ich stimme zu, dass sie nicht das einzige Tool sein sollten, aber sie sind enorm hilfreich bei der Reduzierung des Codebereichs, in dem der Fehler auftritt. Streuen Sie ein paar Mal durch, um zu sehen, wo die Daten plötzlich nicht mehr Ihren Erwartungen entsprechen. Dies ist ein guter Ausgangspunkt für das Debuggen, je nachdem, mit welchem ​​Code Sie arbeiten.

Ich habe eine vage Erinnerung an eine andere, die Funktionsargumente enthält, kann sie aber im Moment nicht finden. Es könnte ein anderes Buch gewesen sein.

Izkata
quelle
6
Ja, er hat sich damals geirrt, was Aussagen im Druck betrifft, und er hat sich auch heute noch geirrt. Wenn ich mit einem Fehler an einem unbekannten Ort konfrontiert werde, sind Ausdrucke und Protokolle im Allgemeinen das Werkzeug meiner Wahl.
Loren Pechtel