2008-09-10 9 views
2

Mein Team verfügt über eine Befehlsparsing-Bibliothek für Konsolenanwendungen. Jedes Team um uns herum hat auch ein eigenes Team. Es gibt nichts in der BCL, also nehme ich an, das ist natürlich.Übernahme von Standardbibliotheken

Ich habe mir das Modul in Mono angeschaut, das solide aussieht, und das auf CodePlex sieht gut aus. Es gibt wahrscheinlich andere da draußen, die funktionieren werden (und ich würde gerne Ihre Vorschläge hören).

Die eigentliche Frage ist: Wie bringe ich mein Team und andere um uns herum dazu, sich zu verpflichten, nur eines zu benutzen?

Antwort

2

Nun, um ehrlich zu sein, können Sie kann nicht machen alle auf einer Lösung zu begleichen. Sie können eine Lösung vorschlagen und auf ihre Vorteile hinweisen, aber letztendlich müssten die Vorteile größer sein als die Trägheit, die sie mit ihrer gegenwärtigen Bibliothek aufgebaut haben.

Um sie in einer Bibliothek abzurechnen, müssen Sie die Verwaltung wechseln, bis Sie zu der Person gelangen, die alle beteiligten Gruppen verwaltet. Überzeugen Sie diese Person, warum jeder eine Bibliothek verwenden sollte, und lassen Sie sie dann wieder filtern.

Nun, da ich das gesagt habe, warum ist das wichtig? Arbeitet Ihr Team routinemäßig an Code der anderen Teams? Verwenden die anderen Teams Bibliotheken, die Probleme für Ihren Code verursachen? Ist diese Standardisierung nur der Standardisierung zuliebe oder gibt es ein spezifisches Problem, das die Ursachen nicht standardisiert?

1

Sobald Sie eine Lösung gefunden haben, fangen Sie an, es in Codeüberprüfungen zu erzwingen. Wenn es nicht in einem neuen Code implementiert ist, sag es ihnen, sorry, aber du musst zurückgehen und es erneut tun. Wenn Sie bereits Standards und Reviews haben, ist dies viel einfacher zu implementieren.

+0

Mein Verständnis ist, dass dies ein Cross-Team-Problem ist. Wenn dies der Fall ist, bin ich mir nicht sicher, ob diese Lösung funktionieren würde, es sei denn, es gibt eine Überprüfung des Team-Codes. Warum würde das andere Team auch bei einer Teamüberprüfung nicht das Gleiche tun und das OP zwingen, seine Bibliothek zu benutzen? – EBGreen

+0

Mit den neuen Informationen, dass es im Wesentlichen Team-Review gibt, könnte der Versuch, eine bestimmte Bibliothek zu erzwingen, funktionieren, aber ich denke erst ** nachdem ** ein Standard festgelegt ist. – EBGreen

0

EBGreen, guter Punkt, hätte ich warum Ich möchte dies tun. Unsere Teams lesen und bearbeiten häufig Code von den umliegenden Teams. Und ich meine Feature-Teams, nicht nur dev/test/pm Divisionen.

Dies ist nur eines dieser kleinen Dinge, die alle verlangsamen. Arbeitest du am Code von Team C? Ich muss ihre Lib aufspüren, die auf mysteriöse Weise nicht in den nächtlichen Builds steckt (ein anderes Problem, aber unabhängig davon). Die Arbeit eines anderen Entwicklers überprüfen? Sie müssen herausfinden, wie ihr Parser funktioniert. Ein neues Projekt starten? Sie müssen entscheiden, welche Bibliothek importiert werden soll.

Ich denke, dass Ihre Antwort die Lösung jedoch anzeigt: Stellen Sie die Bibliothek irgendwo sehr bequem, so dass es von neuen Projekten aufgenommen werden kann (ich bezweifle, dass viele bestehende überarbeitet werden, sollten sie auch sein) funktioniert gut), und machen Sie die Vorteile der Verwendung klar.

Danke!

0

@ fatcat1111, in diesem Fall wäre auf jeden Fall eine standardisierte Bibliothek von Vorteil. Um die anderen Teams zu überzeugen, gibt es zwei Ansätze, die ich mir vorstellen kann. Erstens weisen wir darauf hin, dass die Standardisierung innerhalb einer Gruppe immer den Programmieraufwand reduziert (Abzinsung des anfänglichen Hochlaufs für Personen, die neu in der standardisierten Bibliothek sind). Zweitens, versuche sie von Features zu überzeugen. Hoffentlich würden Sie die Bibliothek mit den meisten Funktionen auswählen, so dass sie besser wäre als alle anderen.

0

PowerShell bietet großartige Kommandozeilenparsing-Optionen kostenlos. Wenn Sie ein Cmdlet erstellen, definieren Sie Eigenschaften und verwenden Attribute, um Befehlszeilenoptionen zu bestimmen. Die PowerShell-Laufzeit verarbeitet dann das Parsen der Eingabe für Sie.

Da PowerShell mit .NET-Objekten arbeitet, können die Ergebnisse Ihrer Befehle auch Rich-Objekte mit Eigenschaften und Methoden sein.

Here ist ein netter Blogbeitrag zum Schreiben und Debuggen von Cmdlets.

0

Ich empfehle NDesk.Options. Es nutzt Lambda-Funktionen/.NET 3.5 und es ist sehr schön :

http://www.ndesk.org/Options Was Sie im Grunde tun ist:

var p = new OptionSet() { 
    { "file=",  v => data = v },<br> 
    { "v|verbose", v => { ++verbose } },<br> 
    { "h|?|help", v => help = v != null },<br> 
}; 
List<string> extra = p.Parse (args); 

Und du bist fertig.

Es Schlüssel/Wert-Paare mit benutzerdefinierten Separatoren, Listen, Einzelwertoptionen unterstützen und wechseln Optionen

Sie ihn nicht benutzen werden es bereuen.

Verwandte Themen