Wie entwickle ich einen Standard (C # vs. VB.NET)

8

Also möchte ich nicht, dass dies in einen Flammenkrieg zwischen C # - und VB.NET-Entwicklern gerät. Dies ist rein vom Standpunkt einer Entwicklungsabteilung aus gesehen. Wir sind seit Jahren ein VB.NET-Unternehmen, aber das lag hauptsächlich daran, wen wir eingestellt haben. Diese Anforderung hat sich in letzter Zeit verschoben, da wir zwei auf C # spezialisierte Leute eingezogen haben. Ich war ein C ++ / C # Typ, bevor ich für diese Firma in VB.NET umwandelte.

Also, für alle, die sich damit auseinandersetzen müssen, sei es auf der Basis von Einstellungen oder auf der Grundlage von Wartbarkeit: Wie gehen Sie mit der Standardisierung von Wahlsprachen um? Ich bin geneigt, einen Push für C # zu machen, denn das macht 3 solide C # -Entwickler hier. Aber nur neugierig, was alle darüber denken.

    
StephenPAdams 05.10.2009, 21:12
quelle

12 Antworten

9

Wenn Sie viel Code haben, der bereits in einer bestimmten Sprache geschrieben ist, bevorzugen Sie diese Sprache.

Andernfalls, wenn Sie mehr Entwickler haben, die in einer Sprache versiert sind, bevorzugen Sie diese Sprache.

Andernfalls bevorzugen Sie C # (es ist im Allgemeinen beliebter und funktional sind sie nicht verschieden genug, um eine sinnvolle Auswahl nur für Funktionen zu treffen).

    
Pavel Minaev 05.10.2009, 21:19
quelle
15

Als jemand, der in einem gemischten Laden arbeitet, ist es nicht schwer, beides zu nutzen. Aber es hilft, einen Standard zu haben, der es einfacher macht, Code hin und her zu verschieben. Hier sind einige Ideen für Ihren Standard:

Für die VB-Entwickler:

  • Alte vb6-Stil-Funktionen in neuem Code nicht zulassen. Ich spreche über String und andere Funktionen (Len, InStr, Replace, UBound, etc). Die Konvertierungsoperatoren (CInt, Cstr, etc) sind immer noch in Ordnung, weil sie Sprachoperatoren sind, aber bevorzugen eine Convert.To___() -Funktion wo möglich für die einfache Umwandlung in und aus C #.
  • Erfordert Option Strict und Option Explicit . Du gibst etwas dynamische Tipp-Coolness auf, indem du es zu einer Voraussetzung gegenüber einem starken Vorschlag machst, aber es ist es wert, die Code-Parität mit C # zu halten.
  • Standardisieren Sie '+' vs '& amp;' für String-Verkettung (wenn Sie nicht bereits einen StringBuilder verwenden)
  • Bevorzugt AndAlso und OrElse über And und Or

Für die C # Entwickler:

  • Verbieten Sie Namen, die sich nur in Groß- und Kleinschreibung unterscheiden. Dies umfasst insbesondere Namen, die im Wesentlichen mit dem Typnamen identisch sind ( SomeType sometype = ... ). Sagen Sie ihnen, dass sie stattdessen ein _ Präfix verwenden sollen (und nicht "m_"). Das solltest du sowieso machen, aber es ist besonders wichtig in einem gemischten Shop, weil es schwieriger wird, mit diesem Code in VB zu arbeiten.

Für beide:

  • ArrayLists und andere nicht-generische Sammlungen nicht zulassen (weil sie nicht nur böse sind, sondern auch VB und C # alle erforderlichen Castings sehr unterschiedlich handhaben, auch wenn die Option strikt dank CType ist)

Wenn Sie das tun, wird es nur wenige echte Unterschiede zwischen dem Code für die beiden Gruppen geben, und Sie haben den ersten Schritt getan, den VB-Entwicklern beizubringen, wie C # -Entwickler zu denken.

    
Joel Coehoorn 05.10.2009 21:31
quelle
8

Bei einem früheren Kunden, der seine missionskritischen Anwendungen in VB geschrieben hatte, fiel es ihnen schwerer, VB-Programmierer im Gegensatz zu C # zu finden.

Also haben sie beschlossen, ihre Apps auf C # umzustellen.

Wie bei den meisten IT / Dev-Fragen hängt die Antwort davon ab. Wenn Sie mehr Leute in Ihrer Abteilung haben, die mit VB großartig sind, dann gehen Sie mit VB. Ich glaube nicht, dass einer so viel besser ist als der andere.

    
Jack Marchetti 05.10.2009 21:16
quelle
5

Die Frage, die Sie stellen, ist tatsächlich sehr wichtig, und zu viele Leute werden Ihnen sagen, dass die Sprachwahl nur eine persönliche Präferenz ist. Aber Sie wissen bereits, dass dies vom Standpunkt einer Organisation aus nicht wahr ist. Die Auswahl eines Standardsets von Frameworks, Sprachen, Tools usw. ist eine wichtige geschäftliche Entscheidung.

Ihre Programmierer sollten in der Lage sein, beide Sprachen mit ein wenig Zeit, Ermutigung und vielleicht ein wenig Training zu benutzen. C # und VB sind eng, und es gibt keine nennenswerten technischen Gründe, sich für einen zu entscheiden ...

Ich rate Ihnen daher, die Sprache Ihrer Organisation aus geschäftlichen Gründen auszuwählen. Wenn es einfacher ist, C # -Teams einzustellen, oder wenn Sie feststellen, dass sie bessere Fähigkeiten für die Art von Arbeit haben, die Sie tun, dann erhalten Sie eine für C #. Wenn Sie Code für Kunden schreiben und diese Kunden C # -Verkäufe bevorzugen, erhalten Sie eine weitere Bewertung für C #. Wenn Sie in VB bereits Code haben, erhalten Sie einen Wert für VB.

Es sollte eine ziemlich einfache Panne sein ... ignorieren Sie einfach technische Gründe und konzentrieren Sie sich darauf, wie sich die Sprachwahl auf Ihr Unternehmen auswirkt, in Bezug auf Einstellung, Training, Lieferfähigkeit für den Kunden usw.

    
Stephen M. Redd 05.10.2009 21:25
quelle
5

Wenn es einen einzigen Grund gibt, C # für Ihr Unternehmen zu übernehmen, ist dies der Lambda-Operator. Ohne die volle Unterstützung des Lambda-Operators in VB.NET werden einige der besten Tools entweder verkrüppelt oder DOA. Zum Beispiel: fließende NHibernate, StructureMap etc.

    
Chris Marisic 05.10.2009 21:30
quelle
4

Vor einigen Jahren haben wir c # standardisiert, weil c # bei ernsthaften Entwicklern mehr Anhänger zu haben scheint.

Lassen Sie mich klarstellen, ich sage nichts Schlechtes über VB.NET oder diejenigen, die es benutzen.

    
Jon B 05.10.2009 21:15
quelle
3

Das hängt vollständig vom Entwicklerpool ab, den Sie haben.

    
schar 05.10.2009 21:22
quelle
3
  1. Sprechen Sie mit einigen lokalen Recruitern, finden Sie heraus, welche Skillsets in Ihrer Gegend verfügbar sind, wenn Sie mehr Entwickler einstellen würden. Was verfügbar ist, sollte Ihre Wahl beeinflussen.
  2. Stellen Sie sicher, dass Ihre Entwickler mit Ihrer aktuellen Codebasis arbeiten können, unabhängig von der Sprache
  3. Fragen Sie Ihre Entwickler nach ihrer Präferenz, da sie ihre Entscheidung darauf gründen können, bei der Firma auf der Straße zu bleiben.
  4. Sehen Sie sich die Unterstützung für diese Sprachen in Ihrer Branche an. Zum Beispiel könnte eine Anwaltskanzlei viel MS Office und VBA-Integration benötigen. Die Verwendung von VB.NET könnte Vorteile für das Cross-Training bieten. Oder Sie befinden sich in einer Branche, in der viele C ++ -, C- oder Java-basierte Tools zum Einsatz kommen. Die Verwendung von C # ist für diese Programmierer natürlicher.
  5. Sehen Sie, welche Art von Trainingsressourcen Sie in diesen Sprachen zur Verfügung haben. Wenn Sie mehr oder billigeres Training für eine bestimmte Sprache erhalten können, möchten Sie es vielleicht bevorzugen.
  6. Fange an, über deinen Plan nachzudenken, in eine andere Sprache auf dem Weg zu wechseln. Selbst wenn Sie heute standardisieren, was ist in 5 Jahren? Oder 10? Sprachen ändern sich, Bedürfnisse ändern sich.
Andrew Lewis 05.10.2009 21:37
quelle
2

Auf einer reinen Fähigkeitsbasis sind sie ungefähr so ​​nah wie zwei Sprachen. VB.NET neigt dazu, mehr COM-Interaktivität zu erhalten und hat literales XML - aber C # bekommt bald davon.

Es ist wirklich nur eine persönliche Vorliebe und in welcher Sprache das Team am produktivsten sein kann.

    
Lou Franco 05.10.2009 21:15
quelle
1

Es klingt, als ob Sie schon einen Standard haben - VB.NET. Und vielleicht sind Sie versucht oder interessiert, stattdessen in C # einzusteigen.

Es macht wenig Sinn, die Hälfte Ihrer Systeme in VB und die andere Hälfte in C # zu schreiben - obwohl dies je nach Art Ihrer Organisation nicht zutrifft. Aber im Allgemeinen sollte die Organisation diese Veränderungen nicht leichtfertig vornehmen.

Wenn ich Sie wäre (und Sie wären daran interessiert, für sich selbst zu C # zu wechseln), würde ich auf C # setzen, aber wenn ich das Geschäft wäre, dann würde ich einen sehr guten Grund brauchen, diese neue Komplexität einzuführen. Management-Problem.

    
Kirk Broadhurst 05.10.2009 21:26
quelle
1

Wir hatten kürzlich das gleiche Problem. Wir programmieren beide einfach ein, abhängig davon, wo das ursprüngliche Projekt gestartet wurde. Es ist überraschend einfach, vor allem mit Visual Studio hin und her zu wechseln (es erinnert mich immer, wenn ich anfange "bool myvar ..." zu tippen, dass ich mache etwas falsch, wenn ich in einer .vb Datei bin.)

Unsere Priorität lautet so:

  • Verwenden Sie eine vorhandene Sprache, wenn wir bereits Code für dieses Projekt / diesen Kunden haben
  • Verwenden Sie die Sprache, die der Kunde bevorzugt,
  • Benutze sonst C # (das liegt nur daran, dass es in C # weit mehr Beispiele gibt, wenn du ein Code-Snippet suchst, um dich schnell durch ein Problem zu bringen)
Scott Whitlock 06.10.2009 12:55
quelle
-1

Es sollte ein guter Grund sein, mit einem Standard gegenüber einem anderen zu gehen. Benutze diese:

  1. VB.NET scheint viel ausführlicher als C #. (Beispiel: " Dim var als MyClass" vs "MyClass var")
  2. C # ähnelt C ++ und Java. VB.NET ist ähnlich wie ... nun, nichts. (es sei denn, Sie zählen VB6 ...)
  3. Versuchen Sie, in VB.NET ein unregelmäßiges Array zu erstellen. Ich wage dich.
James Jones 05.10.2009 21:59
quelle

Tags und Links