Niektóre języki np dodają implicite średniki na końcach linii, o ile np linia daje się skompilować. Wtedy np kod:
Kopiuj
while (true)
{
break
}
Spowodowałby nieskończoną pętlę.
Druga sprawa, już w codziennie używanych językach, jest taka, że nawiasy wąsate nie muszą oznaczać ciał instrukcji sterujących. Ja czasem sobie lubię wydzielić jakiś kawałek kodu, nie dość że mam logiczny podział, to jeszcze ograniczam sobie zasięg zmiennych gratisowo. Na przykład:
Kopiuj
i++;
{
int b = 8;
b *= c;
d += b;
}
z += 8;
Jeżeli mam instrukcję sterującą (czyli if, while, for, itp) to nawias wąsaty otwierający walę w tej samej linii na końcu. Co to daje? Otóż tak czy siak szybko widać gdzie się bloki zaczynają lub kończą, natomiast jeżeli nawiasy wąsate otwierające pisze się w tej samej linii co instrukcje sterujące to od razu widzimy czy mamy do czynienia z rozgałęzieniem kodu:
- jeżeli blok kodu zaczyna się od pojedynczego nawiasu wąsatego otwierającego, to nie ma rozgałęzienia kodu w tym miejscu, tylko logicznie wydzielony blok, np ze zmiennymi lokalnymi o dodatkowo zawężonym zasięgu,
- jeżeli blok kodu zaczyna się od czegoś innego niż nawias wąsaty to musi to być instrukcja sterująca.
Poza tym ciała instrukcji sterujących zawsze umieszczam w nawiasach wąsatych. Dosłownie zawsze. Zapobiega to błędom i ogólnie jest bardziej komfortowe. W tym przypadku pisanie nawiasu wąsatego otwierającego w jednej linii z instrukcją sterującą nabiera jeszcze większego znaczenia (i uzasadnienia), jako że zmniejsza to liczbę pustych linii, czyli więcej kodu się zmieści na ekranie.
Ta metoda z wydzielaniem bloków jest szczególnie przydatna w przypadku pisaniu długich funkcji. Oczywiście długie funkcje nie muszą łamać zasady DRY czy KISS, a z drugiej strony pisanie kilku funkcji (tzn rozbijanie tej długiej funkcji na siłę), z których każda jest używana dokładnie tylko w jednym miejscu czasem utrudnia czytanie kodu.