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.

Comments

  • Anonymous
    February 05, 2009
    PingBack from http://www.clickandsolve.com/?p=3816

  • Anonymous
    February 05, 2009
    Måske er det en kulturel ting, men de fleste programmører i USA synes at favor C # syntaks - det er mere som en rigtig programmeringssprog stedet for at forsøge at være menneskelige læsbare ved at bruge en masse ord. Jeg formoder, det afhænger af din definition af læsbar er - hvis du vil have din kode, der skal læses af andre programmører, så C # gør det mest fornuftigt, da det ligner en masse andre mainstream sprog (C, C + +, Java, Javascript). VB er sandsynligvis mere læsevenlig for ikke-programmører. (Det var oversat fra engelsk til dansk fra Google Translate, så du tilgive nogen grammatik eller stavning problemer).

  • Anonymous
    February 05, 2009
    Jeg ville selv vælge C# syntaxen frem for VB til programmering da det virker mere overkommeligt, jeg elsker dog det simple i VB til at give mit et hurtigt overblik, især hvis jeg skal have hjælp af andre som ikke selv koder C# da det minder meget om plain engelsk

  • Anonymous
    February 05, 2009
    Jeg foretrækker personligt C# men det er primært pga af at det er det eneste af de to jeg har arbejdet med de sidste 5 år. Personligt tror jeg VB er lettere at gå til som ny udvikler da det er mere ordrigt end C# og derfor er lettere at læse. Til gengæld tror jeg at C# er nemmere at scanne igennem, men igen er det nok bare fordi det er det jeg normalt bruger. I det store hele skal man altid være åben for andre programmeringssprog, da man ofte kan lære noget, ikke bare om de andre sprog, men også om ens eget. Og i sidste ende tror jeg det gør en til en bedre udvikler. F# har lært mig meget om C# og CLR'ens muligheder.

  • Anonymous
    February 05, 2009
    Helt klart C#. Men nu udvikler jeg ikke i andet, så måske derfor... men jeg finder c# mere simpelt. If _customers IsNot Nothing Then if (_customers != null) {

  • Anonymous
    February 05, 2009
    Farven har den sammen lyd... :-) For mig er det hip som hap, jeg koder til dagligt i VB, men kender også til C#. Måske er VB marginalt nemmere at læse? Men fra version 4 af C# og version 10 af VB kan det hele snart være ligegyldigt. De to sprog kommer til at ligne hinanden mere og mere... Hvad var det Anders H. sagde til PDC? At han var begyndt at opfatte dem som brødre frem for rivaler...

  • Anonymous
    February 07, 2009
    Personligt foretrækker jeg C# versionen. Årsagen værende at jeg synes at de væsentlige (forretningslogiske om man vil) kodelinier træder mere frem, hvor de i VB drukner lidt mere i forstyrrende syntax. Men jeg er muligvis også miljøskadet :)

  • Anonymous
    February 07, 2009
    I de øverste eksempler må jeg indrømme at C# er mere læseligt i mine øjne. Problemmet med VB.NET er tit at der opstår for lidt "whitespace", så det virker tungt for øjnene. I C# virker { og } automatisk som whitespace, hvor man i VB nok skal lave nogle tomme linie selv. Nu synes jeg stadigvæk at { skal være på dens egen linie - det havde nok også fået flere til at sige C#. VB.NET er mere beskrivende, og derfor god, som folk siger, til folk uden den store programmeringskenskab, eller folk der ikke har kendskab til f.eks. C. Hvis man kender C-sprogende, så er det jo indlysende at != er ikke lig med!?! Men for alle andre, der er det vollapyk.