C# vs. VB.NET

Mens jeg venter på visse andre i mit netværk har jeg besluttet mig for at lave en hurtig test med 2 stykker kode.

Jeg har været rundt hos 21 forskellige mennesker i Microsoft Danmark (Hellerup afdelingen) og spurgt dem om det samme spørgsmål:

Baseret på din logiske sans og hvad du synes ser mest læseligt ud, hvilken af dissen stykker kode synes du bedst om ?

(De har derfor ikke taget stilling til hvad koden rent faktisk gør)

VB

   1: Imports System
  2: Imports System.Collections.Generic
  3: Imports System.Linq
  4: 
  5: 
  6: Namespace Microsoft.DK
  7:   Public NotInheritable Class Customer
  8:     Private _customers As ICollection(Of Customer)
  9: 
 10: 
 11:     Public Sub AddCustomer(ByVal customer As Customer)
 12:       If _customers Is Nothing Then
 13:         _customers = New List(Of Customer)()
 14:       End If
 15: 
 16:       _customers.Add(customer)
 17:     End Sub
 18: 
 19:     Public Function GetCustomers() As IEnumerable(Of Customer)
 20:       Return _customers
 21:     End Function
 22: 
 23:     Public Function GetCustomerBy(ByVal Id As Integer) As Customer
 24:       If Id = 0 Then
 25:         Throw New ArgumentException("Id cannot be 0")
 26:       End If
 27: 
 28:       Try
 29:         If _customers IsNot Nothing Then
 30:           Dim cus = (From customer In _customers _
 31:               Where customer.Id = Id _
 32:               Select customer).SingleOrDefault()
 33: 
 34:           Return cus
 35:         End If
 36:       Catch nullException As ArgumentNullException
 37:         'log exception code
 38:       Catch invalidException As InvalidOperationException
 39:         'log exception code
 40:       End Try
 41: 
 42:       Return New Customer()
 43:     End Function
 44:   End Class
 45: End Namespace

C#

   1: using System;
  2: using System.Collections.Generic;
  3: using System.Linq;
  4: 
  5: 
  6: namespace Microsoft.DK {
  7:     public sealed class Customer {
  8:         private ICollection<Customer> _customers;
  9: 
 10:         public void AddCustomer(Customer customer) {
 11:             if (_customers == null) {
 12:                 _customers = new List<Customer>();
 13:             }
 14: 
 15:             _customers.Add(customer);
 16:         }
 17: 
 18:         public IEnumerable<Customer> GetCustomers() {
 19:             return _customers;
 20:         }
 21: 
 22:         public Customer GetCustomerBy(int Id) {
 23:             if(Id == 0){
 24:                 throw new ArgumentException("Id cannot be 0");
 25:             }
 26: 
 27:             try {
 28:                 if (_customers != null) {
 29:                     var cus = (from customer in _customers
 30:                                where customer.Id == Id
 31:                                select customer).SingleOrDefault();
 32: 
 33:                     return cus;
 34:                 }
 35:             } catch (ArgumentNullException nullException) {
 36:                 //log exception code
 37:             } catch (InvalidOperationException invalidException) {
 38:                 //log exception code
 39:             }
 40: 
 41:             return new Customer();
 42:         }
 43:     }
 44: }
 45: 

Der er 12 der har svaret VB.NET. Størstedelen (80%) af dem fortalte mig, at deres valg var baseret på at sproget var let at læse og mere syntaksen mere forståelig. En mente sågar at syntaksen var smuk.

De 9 der svarede C# mente, at det var virkerde mere kompakt og ren at se på (syntaksen).

Som udvikler kan du ikke bruge dette til ret meget, men det kan måske besvare nogle spørgsmål omkring hvorfor nogle vælger VB.NET fremfor C#. Det vil jeg ikke gøre mig specielt klog på, men jeg er glad for mit eget valg.