Ja mam prostą metodę na to – unikać nawiasów. ;)
Po pierwsze, nie budować złożonych instrukcji i nie oszczędzać przesadnie na lokalnych zmiennych. Jeśli jakaś funkcja potrzebuje danych z kilku innych funkcji, to używam zmiennych lokalnych, tak aby do końcowej funkcji przekazać wyłącznie zmienne. Na koniec i tak czytam kod i oceniam jego czytelność. Jeśli coś jest choć trochę nieczytelne to to wydzielam, deklaruję dedykowaną zmienną i do niej wrzucam rezultat. Dany fragment musi być czytelny i łatwy do analizy (oraz debugowania).
Druga sprawa to rzutowanie, które też tworzy kolejne pary nawiasów. Często widzę fragmenty kodów, w których ta sama zmienna rzutowana jest na inny typ wielokrotnie. W takich przypadkach też warto wykonać rzutowanie raz i zapamiętać finalne dane w dodatkowej zmiennej.
Trzecia sprawa to unikanie nawiasów w najróżniejszych wyrażeniach. Znając kolejność wykonywania działań oraz priorytety operatorów, łatwo można pozbyć się ich nadmiaru. Niektóre projekty (a raczej główni autorzy tych projektów czy po prostu osoby decyzyjne) narzucają konieczność zapisu nawiasów, ze względu na bezpieczeństwo – to już inna sprawa. Takim przykładem jest SFML.
Jeśli o wspomagacze chodzi to każde normalne IDE posiada funkcję kolorowania par nawiasów. Jeśli Twoje nie posiada to je zmień, bo nawet Notepad++ potrafi takie rzeczy robić. I nie ma co też w przypadku nieczytelnego kodu zwalać winę na narzędzia – pisanie ładnego kodu to kwestia praktyki, więc wszystko przyjdzie z czasem (trzeba tylko chcieć). Doświadczony programista pisze kod, który można go bez problemu zrozumieć nawet bez kolorowania składni i innych wodotrysków.