Také to může být konec Javy. Předělat vývojové nástroje pro Android a Google App Engine např. do C# nemůže být tak těžké.
Oracle místo vděku za podporu jazyka Java ho může tímto pohřbít. Tak jako již pohřbil OOo.
Také to může být konec Javy. Předělat vývojové nástroje pro Android a Google App Engine např. do C# nemůže být tak těžké.
Oracle místo vděku za podporu jazyka Java ho může tímto pohřbít. Tak jako již pohřbil OOo.
C#? Nebylo by to nahodou z deste pod okap? Nekdo jiny nekde jinde by si zamnul ruce, par roku pockal a jal by se mastit si kapsu.
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.
Nechapu, co je na te konvenci sileneho. Puvodni knizka o C pouziva pro funkce stejnou konvenci, Google C++ Style Guide pouziva v podstate to same. Pripada mi, ze osamocena je tady Java seSvymPristupem.
podľa tej konvencie viem na prvý pohľad odlíšiť metódu, alebo p roperty (PascalCase) od lokálnej premennej(camelCase)
To je stejna logika jako stoji za "hungary notation" - ze je super promeny pojmenovavat treba "szName", protoze na prvni pohled muzu odlisit zero terminated string od jinyho typu promenny :)
Jinymi slovy je to antipattern :)
Hungary notation považuju za druhý největší omyl Microsoftu (hned po lokalizaci názvů proměnných v Excelu), Pascal case se mi nelíbí (větší práce s psaním názvů a IMO esteticky horší), ale výhodu to, pravda, nějakou má.
možno je to antipattern ale sprehľadňuje to kód, a hlavne nie som odkázaný na podtržítka.
Vzhledem k tomu, že C# nemá lokální funkce, nevidím v tom u metod moc velký smysl. U členských proměnných (properties) bych to chápal víc (přiřazení hodnoty v konstruktoru), ale zase taková výhoda to není. Java se bez toho obejde úplně v pohodě, stejně jako třeba C++.
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
}
}
Myslím, že lambdy přibyly v C# až postupem času a nejsem moc velký příznivce properties, ale OK, argumenty beru.
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.