Hat jemand ein Software-Design von Rube Goldberg gesehen? Im Grunde ein komplizierter Entwurf für einfache Sachen.
Bitte teilen Sie Ihre Geschichten.
Das habe ich von einem Kollegen gehört. Anscheinend fand er eine Webanwendung, die so etwas für die JavaScript-Textfeldvalidierung auf der Client-Seite tut:
Die Fortschrittsbalkenimplementierung ist gut für einen anderen Beitrag. :)
The Daily WTF Sie Quelle für mehr Rube Goldberg Software, die Sie möglicherweise lesen möchten: P.
Einer unserer Junior-Programmierer hat einmal geschrieben, was ein einfaches AJAX-automatisch vorgeschlagenes Textfeld sein sollte, um Benutzerkonten in einer unserer Anwendungen zu suchen.
Das war sein Prozess:
SELECT * FROM Users
für die Datenbank GetAllUsers()
Web-Service-Methode Das funktionierte wirklich ziemlich gut, als er es mit 10 Beispielbenutzern prüfte, aber brachte das System zu einem quietschenden Halt, wenn es gegen einen vollen Testsatz von 3000 Benutzern läuft.
Da Duffs Gerät heute hier populär ist, halte ich es für angebracht, als komplizierten Code etwas Einfaches zu tun:
%Vor%Beachten Sie, dass es im Vergleich zu:
wirklich super effizient ist %Vor%Aber die schiere Eleganz, die von der Absenkung des C-Schalters abhängt, macht es zu einem würdigen Rube.
Ich habe noch keine in der Produktion gesehen, aber ich habe es geschafft, Hello World mit Designmustern auf der folgenden Seite zu sehen:
Als ich bei einer bekannten Firma für Antiviren- und Fernzugriffs-Software war, wurde ein Mitarbeiter, der aus irgendeinem Grund von Managern auf niedrigem Niveau als wirklich exzellent angesehen wurde, dazu benutzt, alle möglichen komplizierten Dinge zu schreiben. Ich habe mich gefürchtet, an seinem Code zu arbeiten. Vieles davon war alles unnötig. Ich musste mich schließlich mit ihm unterhalten, als ich herausfand, dass er MFC in eine zuvor mfc-freie Bibliothek eingeführt hatte (wir versuchten, diesen Code aus einigen unserer Codes herauszuhalten). Er brauchte es offenbar für Streicher und Sammlungen. Ich zeigte ihm stl. Er war sehr begeistert und schien meine Vorschläge wirklich zu beherzigen. Später, als ich den Code erneut betrachtete, sah ich, dass er die MFC-Sammlungen implementiert und STL mit seinen eigenen Schnittstellen versehen hatte, so dass sie wie mfc-Sammlungen aussahen. Beeindruckend. einfach wow.
Ein anderer völlig nutzloser Entwickler bei der gleichen Firma wollte anscheinend nicht die Vererbung in C ++ verwenden - obwohl er Seiten von "Effective C ++" kopiert hat, um potenziellen Mitarbeitern Tests zu geben. Wie auch immer, während einer Code-Überprüfung fragte einer der Leute, die mir berichteten, warum Pete #ifdefs in seinem Code überall verwendete. Sein Projekt würde 4 mal kompilieren und jedes Mal ein anderes Schlüsselwort definieren. Der bedingte Code war für ein bestimmtes Verhalten und der gesamte andere Code für eine ähnliche Funktionalität. Ich wurde weggeblasen. Und dieser Typ wurde auch für einen goldenen Jungen gehalten. Er verursachte im Alleingang eine Neuveröffentlichung eines Produkts, da er in einem Win32-Dienstprozess eine Debugging-Message-Box hinterließ - was den Dienst hemmte, weil er nicht lernen wollte, den Debugger auf Quellcodeebene zu verwenden -, aber das ist eine andere Geschichte.
99 Flaschen Bier hat auch viele Beispiele. Zum Beispiel das erweiterte, erweiterbare Bier / Wall-Framework . Was lustigerweise in Python und nicht in Java geschrieben ist.
Es könnte besser sein, nach Antworten auf diese Frage auf The Daily WTF zu suchen:)
Es sieht so aus, als ob jede Datenkonvertierung, die ich aus einer Filemaker Pro Datenbank gemacht habe, mich glauben macht, dass die Datenbank von Rube selbst entworfen wurde.
Mal sehen ... Alle Felder sind 256 Zeichen lang. Firmennamen, die als Primärschlüssel verwendet werden (warten Sie! Ändern Sie den Namen nicht ...) De-normalisierte Datenbankstruktur (payment1date, payment2date ... payment25date).
(Nicht, dass ich Filemaker Pro dissipiere. Es ist nur, dass es Nicht-Programmierern ermöglicht, Datenbanken zu entwerfen, die eventuell in eine andere Anwendung konvertiert werden müssen.)
Stellen Sie sich eine Konfigurationsdatei vor, die wie folgt aussieht:
%Vor%und ein Parser, der so aussieht
%Vor%Falls Sie sich fragen, wird das "i" später verwendet, um herauszufinden, wie viele Params Sie haben. Und dies ist eine extrem gereinigte Ansicht des Codes.
Ich habe einmal eine Anwendung geerbt, die Konfigurationsdateien in Rubegoldberg-Manier behandelte. Bei der Konfiguration handelte es sich um eine einfache Nur-Text-XML-Datei mit vollständig lesbaren Schlüsseln und Werten. Beim Start öffnet die Anwendung die XML-Datei, durchläuft alle Schlüssel / Wert-Paare, verschlüsselt sowohl den Schlüssel als auch den Wert, erstellt einen Hash des verschlüsselten Schlüssels und fügt das verschlüsselte Schlüssel / Wert-Paar einer statischen Hashtabelle hinzu.
Die Funktion zum Lesen einer Einstellung benötigte einen gewöhnlichen String-Schlüssel und gab einen gewöhnlichen String-Wert zurück, also musste sie den Schlüssel verschlüsseln, ihn hashen und den Hash verwenden, um das Schlüssel / Wert-Paar in der Hash-Tabelle zu finden und dann zu entschlüsseln und den Wert zurückgeben.
Wir haben diese In-Memory-Verschlüsselung aufgerufen. Ich habe immer noch keine Ahnung, welche Denkprozesse zu seiner Entstehung geführt haben, aber ich habe an Mousetrap gedacht, als ich es gesehen habe.
Dies wurde in stackoverflow, Enterprise FizzBuzz , gefunden. Das beste Beispiel, das ich gesehen habe, ein einfaches Problem zu nehmen und viel zu viel "Unternehmens" -Code darum herum zu legen.
Tags und Links design