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.