Un numero di funzionalità sono state introdotte in C# 3.0 che mi ha reso difficile, come inizializzatori di oggetti, metodi di estensione e variabili implicite tipizzate. Ora in C# 4.0 con cose come la parola chiave dinamica mi sto preoccupando ancora di più.Come gestisci le nuove funzionalità di C# in modo che non conducano a codice scritto male?
So che ciascuna di queste caratteristiche PUÒ essere utilizzato in modo appropriato MA a mio avviso, che rendono più facile per gli sviluppatori di prendere decisioni di codifica cattive e quindi scrivere il codice di peggio. Mi sembra che Microsoft stia cercando di conquistare quote di mercato rendendo la codifica semplice e poco impegnativa. Personalmente preferisco un linguaggio rigoroso e pone più richieste ai miei standard di codifica e mi costringe a strutturare le cose in modo OOP.
Ecco alcuni esempi delle mie preoccupazioni per le caratteristiche di cui sopra:
costruttori degli oggetti possono fare importanti logica che non è esposto al consumatore. Questo è nel controllo dello sviluppatore di oggetti. Gli inizializzatori degli oggetti tolgono questo controllo e consentono al consumatore di prendere le decisioni su quali campi inizializzare.
EDIT: Non avevo apprezzato il fatto che si potesse mescolare il costruttore e l'inizializzatore (il mio male) ma questo comincia a sembrare disordinato per la mia mente e quindi non sono ancora convinto che sia un passo avanti.
Consentire agli sviluppatori di estendere i tipi predefiniti utilizzando i metodi di estensione consente a tutti di iniziare a aggiungere i loro metodi preferiti per animali domestici alla classe stringa, che può finire con una sconcertante serie di opzioni o richiede un maggiore controllo degli standard di codifica in estirpare questi
Consentire variabili implicite tipizzate consente una programmazione rapida e sporca, piuttosto che approcci OOP appropriati, che possono rapidamente diventare un disordine ingovernabile di vars su tutta l'applicazione.
Le mie preoccupazioni sono giustificate?
RobW: è necessario riformulare la domanda. "Microsoft è giusto" è un argomento polemico, mentre "Come gestisci le nuove funzionalità di C# in modo che non conducano a un codice scritto male" non è – Brann
OK, darai un risultato! Non cercavo di essere polemico, ed è per questo che ho fornito esempi del mio punto di vista, sono intuibile in ciò che pensano gli altri sviluppatori. –
È anche una domanda di "discussione" senza una risposta definitiva (solo opinioni) e quindi la wiki della comunità sarebbe appropriata. –