チーム言語ベースが混在している場合、ac#devはVB.netに切り替える必要がありますか?


14

私は最近、言語設定が.netプラットフォームで混在している新しい開発チームに参加しました。

  • 開発者1:VB.netを知っているが、c#を知らない

  • 開発者2:VB.netを知っているが、c#を知らない

  • 開発者3:c#とVB.netを知っており、c#を好む

  • 開発者4:C#とVB6を知っている(VB.netは簡単に入手できるはずです)、C#を好む

.netスペースの思想的リーダーは、ほぼ普遍的にc#開発者であるように思えます。また、サードパーティのツールの中にはVB.netをサポートしていないものもあると思いましたが、調査を始めたときに良い例が見つかりませんでした。

私はc#でチーム全体を獲得したいと思いますが、好み以外に問題を強制する正当な理由がない場合、それは正しい選択だとは思いません。

VB.netから人々を遠ざけるべき理由はありますか?


5
一人でVB内の冗長性は、C#...にあなたを導くべきである
アーロンMcIver

13
あなたの開発チームには真剣なリーダーシップが欠けているように思えます。マネージャーがこの問題に対処しなかったのはなぜですか?

2
なぜVB .Netに移行しているのですか?上記の図から、スキルのある2人の開発者はC#を知っており、他の開発者は.Netをまったく知りません。他の2人の開発者が既に構築するC#のスキルを持っているので、どちらの言語もC#でスピードアップしないようにするのが最善でしょうか?

15
ボンネットの下ではそれらは同じかもしれませんが、VB構文は、warくてwar悪なsisterい姉妹で、より暑くてよく浴したC#姉妹の隣に立っています。シンタックスは、多くの開発者の目から彼ら自身のバージョンの地獄を注視する際にこぼれた血の参照点としてのみ記憶されるべきです。VBは去勢され、殺され、暖かい夏の暑さで腐敗するために道路の脇に残されるべきです。より美しい構文を受け入れ、母なる自然が忘れることを選んだものを避けてください。賢明に選択してください。
ムージュース

2
間違っていなければ、On Error Resume Nextはレガシーサポート用です。VB.Netに存在するCatchブロックを試してください... .Netです。
トニーエイブラムス

回答:


2

プロジェクトに特に役立つ機能や時間の節約になる機能がない限り、誰かに言語の変更を強制する真に説得力のある理由はありません。これらは、ILにコンパイルされ、同等に実行されます(Option StrictVB.NETでオンになっていると仮定します。そうでない場合、遅延バインディングに対してペナルティが発生する可能性があります)。他のすべては本当に優先されます(それを完全に却下することではありませんが、客観的な測定基準ではありません)。

お住まいの地域の求人情報を見て、どちらの言語が仕事の供給(つまり、両方の言語の労働プール)でより一般的かを確認することをお勧めします。どれがより大きなまたはより良い労働力プールを提供するかを見ることは、おそらくあなたの最も説得力のある指標になるでしょう。


地元の求人情報についてあなたが言ったことに同意します。見落としやすいのは潜在的な人材プールであり、1つの言語を他の言語よりも選択すると、将来の採用活動に影響が出る可能性があると思います。
jjr2527

7

幸いなことに、答えは簡単です。「最良の」言語はありません。すべての.NET言語は、.NET Frameworkが提供する一連のクラスの機能をルートで使用します。したがって、VB.NETでできることはすべて、C#でできること、およびその逆です。言語間の唯一の違いは、単なる構文上の違いです。

C ++、Java、およびJ ++プログラマーは、C#のナンセンスで簡潔な構文を好みます。Visual Basic(VB)プログラマは、知っている悪魔、つまりVisual Basic .NETの大文字と小文字を区別しない擬似自然言語アプローチに固執することを好む場合があります。VBプログラマーがいて、彼らが本物のプログラマーである場合(Option Strict ONを参照)、同じ結果が得られます。VBはより冗長です。...C#は大文字と小文字を区別するボールバスターです。


確かに、どちらも98%を実行できますが、もう一方はVBで自分とぶら下がるロープがたくさんあります。On Error Resume Next単独で私はC#に向かって走ります。Moduleコンセプトも非常に危険です。これはstatic classC#のa に似ていますが......親クラスを参照せずにグローバルにアクセスでき、他の表示なしで自動的に静的になります...親クラスがモジュールであることを除いて...!
ポール・サシク

6
nitpickには申し訳ありませんが、これは事実ではありません。たとえば、C#で例外フィルターをどのように記述しますか?blogs.msdn.com/b/clrteam/archive/2009/08/25/...

@LukeH私たちはその後、C#でそれを呼び出す、VBまたはILで機能を構築することができ、C#の例外フィルタを追加するには:D

4
@Anna:したがって、「VB.NETでできることはすべてC#でできる」というステートメントを反証します。

2
あなたは単にあなたがC#でできることVB.Netで行うことができないというかなりの数のものがあります-も参照してください。stackoverflow.com/q/2362381/50447を
ローランドショウ

5

正直なところ、開発チームは同じ言語を使用するか、少なくとも同じ言語を知っている必要があります。

これは、開発チームが作成するさまざまなアプリケーション間のクロストレーニングとサポートを支援します。

最終的に、VB対C#はすべて好みの戦いですが、チームは使用またはサポートするページと同じページにいる必要があります。


5

チーム言語ベースが混在している場合、ac#devはVB.netに切り替える必要がありますか?

開発者は、チームの標準である.NET言語を使用する必要があります。IMO、使用される言語は1つである必要があります(非常に説得力のあるケースを作成できない場合)。

VB.netから人々を遠ざけるべき理由はありますか?

ここのほとんどの人はC#を好むと思いますが、これは政治的またはビジネス上の決定というより技術的な問題ではありません。使用する.NET言語を決定してから使用します。現在、明らかに考慮すべき要素がたくさんあります。

  • 既存のコードベースはありますか?その大半はどの言語で書かれていますか?
  • VB.NET開発者はC#を簡単に取得できますか?彼らはしたいですか?
  • C#の強化/トレーニングに投資することは経済的に意味がありますか?
  • 言語の切り替えは、既存の成果物にどのように影響しますか?

個人の好みではなく、チームについて考えるための+1
MarkJ

4

実際、VB.NETには、C#には現在ないいくつかの機能があります。XMLリテラル、およびLINQでAggregateメソッドを使用するためのクエリ構文です。


1
VB.NETにもイテレータはありません(つまり、C#のYieldキーワード)。
-atconway


2

私はあなたが今いる2003年に非常に似た状況にありました。ASP ClassicからASP.NETに移行するチームを管理していました。私たちのチームのほとんどは、ASPのデファクト言語としてVBScriptを使用した経験がありますが、ASP / VBScriptからのわずかに複雑な移行パスにもかかわらず、チームの約半数がC#を好みました。最終的にはVB.NETを選択しましたが、振り返ってみると、C#のルートに行ってほしかったです。

その決定の5年記念日に、私は決定を下した私の理論的根拠についてブログ記事を書き、同じ呼び出しを行おうとしている他の開発マネージャーに私の後知恵の利益を提供しようとしました。記事へのリンクは次のとおりです。

「C#とVB.NETの決定に関するマネージャーの回顧展」

記事全体を読みたくない人のために、長い話を短くします。C#よりもVB.NETを選択することでプロジェクトが悪化したとは思いません。最大の問題は、採用に関するものでした。C#またはVB.NETプログラマーを喜んで雇い、どちらの言語でも作業できるようにします。実際にはそれほど違いはありません。ただし、値するかどうかに関係なく、VB.NETにはスティグマがあり、多数の開発者が、それを主要言語として使用することがわかっている仕事を避けています。


C#プログラマーとして、VB.NETを使用するプロジェクトに取り組んできました。しかし、多くの場合、VB.NETプログラマーは自分が何をしているかを知らず、Comp Sci学位を持たず、数百行のコードでメソッドを作成しました。そのため、VB.NETを要求する求人広告を無視するようになりました。
イアン

1

C#のほうが冗長ではなく、私の経験ではインターネットではるかに普及しているため、私はC#に傾倒します。また、C#またはVB.NETは簡単かつ迅速に習得でき、無視できるほど重要ではないことを主張します。一方、.NETフレームワークは巨大であり、絶えず進化しています。マスタリング.NETは、何年もかかりますが、C#やVB.NETをマスターすることができ、数ヶ月以内を取ります。


0

@Anna Karinには良い点があると思うので、ライブラリについて心配する必要はないはずです。少なくとも、c#で動作し、vb.netでは動作しないものは思い出せません。

もう1つの重要な点は、同じチームのメンバーが異なる言語で作業している場合、コードチェックをより困難にすることです。コミュニケーションの摩擦を減らすために、ある種の共通語を使用するのが最善のアイデアだと思います。


0

.NETは同じ機能であるべきであるという以前の答えには同意しますが、これは常に当てはまるわけではありませんが、単純なプロジェクトを持っている場合は問題にならないほど十分に近いです。

チーム全体でC#に切り替える主な理由は、ほとんどの例で使用されている言語であり、ほとんどのオープンソースプロジェクトがC#でソースコードを公開しているためです。したがって、チームがそのようなリソースをプルできない場合は、不必要に自分自身を制限している可能性があります。


0

C#とVB.NETは.NETプラットフォームに基づいています。.NETで働く開発者にとって、.NET、原則、テクニック、パターンを知ることは重要です。その場合、言語間の切り替えは問題になりません。主に構文に関するものです。混合チームでは、おそらく全員が両方の言語を習得する必要があります(大したことではありません)が、チームメンバー間の将来のコラボレーションにとって重要になる可能性があります。


0

すべての人が同じ言語を使用することの1つの利点は、開発者がコードの任意の部分で作業できることを意味するということです。

さらに、VB.NETとC#は、.NETの構文のみが異なります。また、両方の言語で記述されたコードは、同じプロジェクトで問題なく共存できます。


0

私はC#で行くだろう:

  • JavaとC ++(CSコースで頻繁に教えられる言語)に近いです。
  • C#のインターネットには、VBよりも多くのリソースがあります(私が見たものから)。
  • プロジェクトを維持するために、VB(私の会社で見たものより)よりもC#をよく知っている他の開発者を見つける/雇う可能性が高くなります。

0

私の意見では、インターフェイスを使用した契約ベースの開発が可能になり、開発者は希望する言語でクラスをコーディングでき、おそらく異なるアセンブリで低/高レベルのクラスを分離できるはずです。クラスが要求されたインターフェースを尊重し、要件を実装している限り、問題はほとんどないはずです。


0

ここでの他の多くの答えに同意します。私はこの決定をしなければならなかった2つのチームの一員でした。どちらの場合も、最初は、2つの言語が連携して動作するため、開発者が選択できると判断しました。しかし、両方の最初の1年以内に、彼らはC#を選択し、すべての新しいプロジェクトがC#であるという新しい要件を導入することを望んでいました。


0

C#を使用する理由:

  • これまでのところ、2人の開発者が満足しているので、他の2人の開発者がそれを学んだらうんざりするかもしれません。
  • ある時点でより多くの開発者を雇うことを計画しており、「20年間のVB経験」の群衆を避けたいと考えています。
  • 中かっこが大好きです。
  • あなたは人生が大好きです。

VB.NETを使用する理由:

  • C#を知らない2人の開発者は、C#の学習を絶対に拒否します。
  • 「最も抵抗の少ない道を歩む」ことがあなたの会社のモットーです。
  • 更新できない巨大な既存のVBコードベースがあります。
  • HP Lovecraftキックで、日々の生活に「不気味な恐怖」がないことを嘆きます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.