O jazyk tolik nejde, C# je sice progresivnější jazyk než Java a kromě šílené konvence velkého písmena na začátku metody nevidím žádné nevýhody, ale podle mě v tom sporu nejde ani moc o jazyk jako takový.
Pokud by chtěl Google přejít na jiný jazyk, může kromě toho prakticky okamžitě přejít na Scalu, kterou je možné použít už dnes.
C# síce nemá klasické lokálne funkcie (má lambda výrazy ktoré sú vpodstate to isté Func<int, int, int> scitaj = (a, b) => a + b), ale niektoré .NET jazyky majú (napr. F#, Pascal, alebo JavaScript) a názvy identifikátorov by mali byť podľa možnosti univerzálne pre všetky jazyky. Ďalej vidím na prvý pohľad čo je privátny atribút, prípadne lokálna premenná a čo je public (protected, internal) člen. A hlavne u atribútov, ku ktorým pristupujem cez properties nemusím používať podtržítka stačí ich nazvať malým písmenom a vlastnosť veľkým:
class Stvorec : GrafickaKomponenta
{
private Color farba; //privatny atribut zacina malym pismenom nemusim pouzivat podtrzitka
public Color Farba //verejna propert y zacina velkym pismenom
{
get { return farba; }
set { farba = value; RefresniKomponentu(); }
}
public Metoda()
{
var farba = Color.Blue; //lokalna premenna zacina malim pismenom
...
farba = Color.Red; // vidím na prvý pohľad ze premenna je lokalna
Farba = Color.Green; // vidím na prvý pohľad že je to verejna vlastnost
}
}
Já osobně, pokud bych tento kód dostal na review, tak bych jej vracel, že to je zbytečně matoucí překrytí privátní členské proměnné lokální proměnnou...
Protože já třeba nevidím na první pohled, že farba je lokální proměnná té metody, když vím, že třída sama má stejně pojmenovanou členskou proměnnou...
Pokud ovšem ve vašich interních Code Standard máte deklarováno, že nesmíte v členských metodách používat členské proměnné přímo, ale jedině přes setter/getter ... tak proč ne.