Mi prefisso dicendo che capisco che sia Code Analysis che StyleCop sono intesi come linee guida, e molte persone hanno scelto di ignorarli comunque. Ma detto questo, mi piacerebbe vedere quale sia il consenso generale riguardo a queste due regole.CA1500 vs. SA1309 - Quale si vince?
Rule CA1500 dice non rendere i nomi dei parametri e i nomi di campi privati uguali.
Rule SA1309, d'altra parte, non anteporre prefissi ai membri con trattino basso o "m_".
Questo ci lascia poche opzioni per distinguere i campi di backing privati dai parametri corrispondenti. Prendi questi esempi.
SA1309 si lamenta:
class SomeClass
{
int _someField;
public SomeClass(int someField)
{
this._someField = someField;
}
}
CA1500 si lamenta:
class SomeClass
{
int someField;
public SomeClass(int someField)
{
this.someField = someField;
}
}
Quali opzioni ho? Non voglio rendere il campo di supporto privato PascalCase, perché questa è la convenzione (credo abbastanza universale) per campi/proprietà pubblici. E non voglio rinominare l'uno o l'altro, solo per il gusto di risolvere l'ambiguità.
Quindi mi rimane uno dei due precedenti, il che richiederebbe la soppressione di una delle regole SA/CA.
Cosa fate tipicamente voi ragazzi? E, cosa più importante, cosa pensano che dovresti fare gli autori di queste regole (dato che non forniscono soluzioni alternative nella loro documentazione)?
il tuo primo esempio non verrà compilato, i nomi sono incasinati :) –
Normalmente violare CA1500. Ma ho solo Pro, senza TFS, quindi non vedo mai l'avviso. :) –
Violare CA1500 continuamente ma non ho mai ricevuto un avviso fino a quando è abilitato CA1500. C'è qualcosa di magico in questa regola? – Albic