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=3816Anonymous
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 engelskAnonymous
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.