Come si risolve la discrepanza tra "StyleCop C # style" e "Framework Design Guidelines C # style"?

StackOverflow https://stackoverflow.com/questions/426622

Domanda

Dopo aver esaminato l'Appendice A, " Convenzioni di stile di codifica C # " del grande libro "Linee guida per la progettazione di quadri" (2a edizione da novembre 2008), sono piuttosto confuso su quale stile di codifica sia utilizzato internamente / raccomandato da Microsoft.

La voce del blog Una breve storia Delle affermazioni di stile C # :

  

In effetti, le differenze tra lo stile "StyleCop" e lo stile "Linee guida per la progettazione del framework" sono relativamente minori

A mio avviso, le differenze sono piuttosto pronunciate. StyleCop afferma che la parentesi graffa di apertura dovrebbe essere su una linea separata, le Linee guida per la progettazione del framework dicono che dovrebbe essere dopo la dichiarazione di apertura. StyleCop afferma che tutte le parole chiave devono essere seguite da uno spazio, le Linee guida per la progettazione del framework dicono "sbarazzarsi di tutti gli spazi" (anche attorno agli operatori binari).

Trovo questa regola del libro delle Linee guida per la progettazione del quadro particolarmente ironica (pagina 366, sesta regola dall'alto):

  

Non utilizza spazi prima delle istruzioni di controllo del flusso

Right: while(x==y)
Wrong: while (x == y)

Questo afferma esplicitamente che lo stile StyleCop è sbagliato (spazio dopo la parola chiave while, spazi prima e dopo l'operatore binario di uguaglianza).

Alla fine, il codice formattato usando lo stile StyleCop ha un aspetto "diverso" molto diverso da quello formattato usando lo stile Linee guida per la progettazione del framework. Seguendo lo stile delle Linee guida per la progettazione del quadro, si dovrebbe disabilitare un sacco di regole (E non ci sono regole che controllano l'aderenza allo stile delle Linee guida per la progettazione del quadro ...).

Qualcuno (addetti ai lavori MSFT forse?) potrebbe fare luce su questa divergenza?

In che modo la tua squadra sta affrontando questo? Stai seguendo StyleCop? Linee guida per la progettazione del framework? Ignorando del tutto lo stile? Ti stai preparando il tuo stile?

È stato utile?

Soluzione

Su un blog ho letto di questo (non riesco a trovare l'URL) è stato dichiarato: le linee guida del framework sono basate ed evolute dalla guida C ++ (sono tutti sviluppatori C ++ esperti) mentre le linee guida fornite da stylecop sono più moderne nuove linee guida C # ... Entrambi vanno bene, prendi una decisione da solo ... Io personalmente uso quelli StyleCop

Altri suggerimenti

Questo articolo del team di stylecop spiega esattamente cosa stai chiedendo, penso. http://blogs.msdn.com /sourceanalysis/archive/2008/05/25/a-difference-of-style.aspx

E per rispondere alla seconda parte della tua domanda, il nostro team ha appena iniziato a usare StyleCop usando tutte le regole (alcune persone scelgono e scelgono quali usare). L'unica cosa che non mi piace è il tempo in più, ma l'uso di uno strumento come StyleCopForResharper lo rende molto più veloce. Mi annoiavo molto quando le persone scrivevano un codice che sembrava diverso da come l'avrei scritto, ma ora che usiamo StyleCop, il codice di tutti sembra identico. Non dovrai più morderti le labbra per le cose fastidiose che la gente fa

Usiamo StyleCop per tutto il nostro codice e, a parte alcuni piccoli inconvenienti, la maggior parte dei suoi standard mi sembra condurre al codice più leggibile. Molti dei suoi standard sono stati ampiamente discussi all'interno di Microsoft e hanno ricevuto feedback dalla comunità e, sebbene non ci si aspetti che tutti siano d'accordo con tutto, probabilmente si tratta del miglior "standard" che esiste (in particolare perché consente automaticamente convalida e correzione automatica con il plug-in StyleCop per ReSharper).

Se ci sono cose con cui non sei assolutamente d'accordo, Jason Allor che mantiene lo strumento è abbastanza aperto a suggerimenti su certe cose, ad esempio con Auto-proprietà che StyleCop ha inizialmente insistito su ...

public int Prop
{
    get;
    set;
}

... ma abbiamo sollevato una richiesta di modifica per consentire le proprietà a riga singola (ovvero tutto su una riga) poiché non è meno leggibile e occupa meno spazio. Ha apportato questa modifica in pochi giorni.

Prendi una decisione. Se ti piacciono alcune parti dell'una e alcune parti dell'altra, scrivi la tua guida di stile. Se ti piace uno migliore dell'altro, selezionalo.

La cosa essenziale da fare è scegliere uno stile; non c'è modo di valutarsi l'uno sull'altro in modo rigoroso quantitativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top