Frage

Ich habe Suche nach Möglichkeiten, um die richtigen Art und Weise zu lernen, ein Software-Projekt zu verwalten, und ich habe auf der folgenden Blog-Post gestolpert. Ich habe einige der Dinge, die harte Tour gelernt erwähnt, anderen Sinn machen, und noch andere sind mir noch unklar.

Um es zusammenzufassen, der Autor listet eine Reihe von Funktionen eines Projekts und wie viel diese Funktionen eines Projekts ‚suckiness‘ tragen für einen Mangel eines besseren Ausdrucks. Sie können den vollständigen Artikel finden Sie hier: http://spot.livejournal.com/308370.html

Insbesondere verstehe ich nicht die Haltung des Autors auf Abhängigkeiten mit Ihrem Projekt zu bündeln. Diese sind:

== == Bündelung

  • Ihr Partner kommt nur mit anderen Code-Projekten, dass es auf [20 Punkte von FAIL] hängt

    Warum ist das ein Problem, vor allem Punkt 3 angegeben, dass Sie Ihre Projekten Abhängigkeiten geändert haben Ihr Projekt Bedürfnisse anzupassen, ist es daher nicht noch mehr Sinn machen, dass Ihr Code sollte mit seinen Abhängigkeiten verteilt werden?

  • Wenn Ihr Quellcode kann nicht ohne den Aufbau der gebündelten Code-Bits [10 Punkte von FAIL]

    gebaut werden

    Ist dies muss nicht unbedingt der Fall sein für Software gegen 3rd-Party-Libs gebaut? Ihr Code muss, dass anderer Code in seine Bibliothek kompiliert werden, bevor der Linker arbeiten kann?

  • Wenn Sie die anderen gebündelten Code-Bits geändert haben [40 Punkte von FAIL]

    Wenn dies für Ihr Projekt erforderlich ist, dann folgt natürlich, dass Sie mit Ihnen den Code gebündelt haben. Wenn Sie einen Build von einigen lib anpassen möchten, sagen WxWidgets, werden Sie zu bearbeiten haben, dass Projekte Build-Skripte, die Bibliothek bulid, dass Sie wollen. Anschließend werden Sie diese Änderungen Menschen veröffentlichen müssen, die wünschen, Ihren Code zu bauen, also warum nicht ein hohes Maß make Skript mit dem params bereits geschrieben verwenden und verteilen? Darüber hinaus (vor allem in einer Windows-env), wenn Ihr Code-Basis auf einer bestimmten Version eines lib abhängig ist (die Sie auch für Ihr Projekt, um benutzerdefinierte Kompilierung benötigen) wäre es nicht einfacher sein, um dem Benutzer den Code selbst zu geben (weil in Im vorliegenden Fall ist es unwahrscheinlich, dass der Benutzer bereits die richtige Version) installiert?

Wie würden Sie diese Kommentare reagieren, und welche Punkte kann ich berücksichtigen, werden Fehler? Würden Sie zustimmen oder nicht den Autor nehmen (oder von mir), und warum?

Herausgegeben für die Klarstellung.

War es hilfreich?

Lösung

  

Ihr Partner kommt nur mit anderen Code-Projekten, dass es hängt davon ab.

Mein Projekt erfordert Projekt X.

Da mein Projekt auf geheime inneren Geheimnissen von X abhängt, oder eine frühere Version von X, dann enthält mein Projekt eine Kopie von X. Insbesondere n.m von X. lösen und keine andere.

Versuchen Sie, die neuesten und besten X und sehen, was Brüche in meinem Projekt zu installieren. Seit Upgrade X mein Projekt brach, vergessen mein Projekt. Sie werden nicht kämpfen mit etwas, das spontan bricht nach einem Update. Sie werden eine bessere Open-Source-Komponente finden.

Daher ist eine Punktzahl FAIL.

  

Wenn Sie Ihren Quellcode nicht ohne zuerst den Aufbau der gebündelten Code-Bits gebaut werden.

Ihr Projekt verlässt sich nicht auf die API X. Es stützt sich auf tiefe, innere Verknüpfung auf bestimmte Teile von X, die API zu umgehen.

Wenn mein Projekt auf dem API X abhing, dann - für einige Sprachen wie C oder C ++ -. Mein Projekt nur mit dem C oder C ++ Header kompilieren kann nicht die Binärdateien

Für Java ist dies weniger wahr, da es nicht unabhängig ist, nicht binären Header. Und für dynamische Sprachen (wie Python) das macht keinen technischen Sinn.

Aber auch Java und Python haben Möglichkeiten, um separate Schnittstelle von der Implementierung. Wenn ich auf der Umsetzung verlassen (nicht-Schnittstelle), dann habe ich immer noch das gleiche wesentliche Problem geschaffen.

Wenn mein Projekt auf C oder C ++ Binärdateien abhängig ist, und sie bauen die Dinge aus der Ordnung oder eine andere Komponente aktualisieren, ohne Mine wieder aufzubauen, können die Dinge für sie schlecht. Sie können sehen, Seltsamkeit, Bruch, „Instabilität“. Mein Produkt erscheint gebrochen. Das werden sie nicht (und kann) es debuggen. Sie sind fertig. Sie werden etwas stabiler finden.

Daher ist eine Punktzahl FAIL.

  

Wenn Sie die anderen gebündelten Code-Bits geändert haben.

Ich habe zwei Möglichkeiten, wenn ich X ändern.

  1. Erhalten Sie es als Teil von X akzeptiert.

  2. Fix mein Programm zur Arbeit mit nicht modifizierten X.

Wenn mein Projekt auf einem modifizierten X abhängt, kann niemand installieren X einfach, korrekt und unabhängig. Sie können nicht X aktualisieren, können sie X. nicht halten Sie können wahrscheinlich nicht Bug-Fixes oder Sicherheits-Patches X anwenden.

Ich habe im Wesentlichen aus ihrer Arbeit unmöglich durch X ändern.

Daraus ergibt sich die FAIL-Score.

  

Anschließend werden Sie diese Änderungen Menschen veröffentlichen müssen, die wollen Ihren Code bauen.

Eigentlich werden sie mich hassen dafür. Sie wollen nicht über die geheimnisvollen Veränderungen X. wissen sie zu bauen X wollen nach den Regeln, dann bauen sie meine Sachen nach den Regeln. Sie wollen nicht lesen, denken oder sicher sein, dass das Geheimnis Update-Patch-Kit wurde korrekt angewendet.

Anstatt Witz herum mit, dass, werden sie ein konkurrierendes Paket herunterladen. FAIL.

  

, wenn Ihre Codebasis ist abhängig von einer bestimmten Version eines lib (die Sie auch für Ihr Projekt, um benutzerdefinierte Kompilierung benötigen)

Das ist wirklich schäbig. Wenn ich auf einer Version mit benutzerdefinierten compiles abhängen, sind sie an meinem Paket fertig suchen. Sie werden etwas ohne versionsspezifische innere Geheimnisse und benutzerdefinierte compiles finden, bevor sie kämpfen werde. FAIL.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top