Spędziłem większość ostatnich kilku lat pracując głównie z C # i SQL. Każdy programista, z którym pracowałem przez ten czas, miał zwyczaj umieszczać nawias otwierający funkcji lub instrukcji przepływu w nowym wierszu. Więc ...
public void MyFunction(string myArgument)
{
//do stuff
}
if(myBoolean == true)
{
//do something
}
else
{
//do something else
}
Zawsze uderzyło mnie to, jak mało miejsca to jest, szczególnie w instrukcjach if / else. Wiem, że w późniejszych wersjach C # istnieją alternatywy, takie jak:
if(myBoolean == true)
//do something on one line of code
Ale mało kto ich używał. Wszyscy zrobili kręcone szelki na nowej linii.
Potem wróciłem do robienia JavaScript po długiej nieobecności. W mojej pamięci, programiści JavaScript robili dokładnie to samo curly-nawiasy klamrowe-nowa linia, ale przy wszystkich fantazyjnych nowych bibliotekach i innych rzeczach, większość programistów umieszcza nawias otwierający po deklaracji:
function MyJavaScriptFunction() {
//do something
}
Widać w tym sens, ponieważ odkąd stosowanie zamknięć i wskaźników funkcji stało się popularne w JavaScript, oszczędza dużo miejsca i czyni rzeczy bardziej czytelnymi. Zastanawiałem się więc, dlaczego nie było postrzegane jako zrobione w C #. W rzeczywistości, jeśli wypróbujesz powyższą konstrukcję w Visual Studio 2013, faktycznie sformatuje ją dla Ciebie, umieszczając otwierający nawias w nowej linii!
Teraz widziałem to pytanie w Code Review SE: https://codereview.stackexchange.com/questions/48035/questions-respactions-let-me-tell-you-about-you, w którym dowiedziałem się, że w Javie język, którego nie znam zbyt dobrze, uważa się za rygorystyczny sposób otwierania nawiasów klamrowych zaraz po deklaracji, w nowoczesnym stylu JavaScript.
Zawsze rozumiałem, że C # był pierwotnie wzorowany na Javie i był zgodny z wieloma tymi samymi podstawowymi standardami kodowania. Ale w tym przypadku wydaje się, że nie. Zakładam więc, że musi być dobry powód: jaki jest powód? Dlaczego programiści C # (i Visual Studio) wymuszają otwieranie nawiasów klamrowych w nowej linii?
if(myBoolean == true)
nie ma dla mnie sensu. Skoro już to robimy, a nie if ((myBoolean == true) == true)
? Po prostu if (myBoolean)
i to wystarczy. Przepraszam, mój wkurzony zwierzak.