Nel podcast 73 , Joel Spolsky e Jeff Atwood discutono, tra gli altri argomenti, "cinque cose che tutti dovrebbero odiare del loro linguaggio di programmazione preferito":
Se sei soddisfatto della tua attuale catena di utensili, non c'è motivo di cambiare. Tuttavia, se non puoi elencare cinque cose che odi del tuo linguaggio di programmazione preferito, allora sostengo che non lo sai ancora abbastanza bene da giudicare. È bene essere consapevoli delle alternative e avere un sano occhio critico per qualunque cosa tu stia usando.
Essendo curioso, ho posto questa domanda a tutti i candidati che ho intervistato. Nessuno di loro è stato in grado di citare almeno una cosa che odiano di C # ¹.
Perché? Cosa c'è di così difficile in questa domanda? È a causa del contesto stressante del colloquio che è impossibile rispondere a questa domanda da parte degli intervistati?
C'è qualcosa in questa domanda che lo rende negativo per un'intervista?
Ovviamente, ciò non significa che C # sia perfetto. Ho un elenco di cinque cose che odio di C #:
La mancanza di un numero variabile di tipi in generici (simile a
params
per argomenti).
Action<T>
,
Action<T1, T2>
,
Action<T1, T2, T3>
,
⁞ serio ?!
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
La mancanza di supporto per le unità di misura, come in F #.
La mancanza di proprietà di sola lettura. Scrivere un
private readonly
campo di supporto ogni volta che voglio una proprietà di sola lettura è noioso.La mancanza di proprietà con valori predefiniti. E sì, so che posso inizializzarli nel costruttore senza parametri e chiamarlo da tutti gli altri costruttori. Ma non voglio.
Eredità multipla. Sì, provoca confusione e non è necessario nella maggior parte dei casi. È ancora utile in alcuni casi (molto rari) e la confusione si applica anche (ed è stata risolta in C #) alla classe che eredita diverse interfacce che contengono metodi con lo stesso nome.
Sono abbastanza sicuro che questo elenco sia lungi dall'essere completo, e ci sono molti più punti da evidenziare, e soprattutto molto migliori dei miei.
¹ Alcune persone hanno criticato alcuni assembly in .NET Framework o la mancanza di alcune librerie nel framework o criticato il CLR. Ciò non conta, poiché la domanda riguardava il linguaggio stesso e mentre potevo potenzialmente accettare una risposta su qualcosa di negativo nel nucleo di .NET Framework (ad esempio qualcosa come il fatto che non esiste un'interfaccia comune per TryParse
, quindi se vuoi analizzare una stringa in più tipi, devi ripetere te stesso per ogni tipo), una risposta su JSON o WCF è completamente fuori tema.
Why the question “give five things you hate about C#” is so difficult to answer
Perché è una domanda in elenco, e un mod malvagio lo chiuderebbe come "non costruttivo" prima che tu abbia la possibilità di rispondere ...; P