Wszyscy wiemy, że Notatnik to bardzo dobry edytor kodu. Wystarcza w zupełności, o ile tylko jesteśmy w stanie zorientować się w gąszczu liter, cyfr i symboli bez żadnych wizualnych wskazówek w postaci ich kolorowania. Jakoś dziwnym trafem miażdżąca większość programistów preferuje jednak edytować kod odpowiednio “odmalowany” przez IDE. Widać nie potrafią docenić piękna kodowania na monochromatycznym monitorze ;-)
A nieco poważniej mówiąc: kolorowanie kodu to istotna sprawa, gdyż jest to kwestia komfortu naszych drogocennych narządów wzroku. Ponieważ miałem do czynienia z wieloma edytorami kodu i środowiskami programistycznymi, wydaje mi się, że mogę dość sensownie wypowiedzieć się na temat tego, jak należy ustawić kolory dla poszczególnych składników kodu, by były one komfortowe.
Najważniejszy jest tu prawdopodobnie odpowiedni kontrast, który nie wyraża się wyłącznie różnicą jasności między tłem a tekstem – zwłaszcza w systemie RGB. Powiedziałbym zresztą, że dla każdego jest to kwestia raczej subiektywna. Znam osoby, które świetnie czują się w kolorystyce rodem niemal z Matriksa: czarne tło i biały tekst, który miejscami przechodzi w jaskrawe kolory, wyraźnie odcinające się na ciemnym ekranie (jak zielony lub purpurowy). Pozwolę sobie jednak zaryzykować stwierdzenie, że takich osób nie ma zbyt wiele :) Powszechniejsza zdaje się konfiguracja z jasnym tłem; ma ona też tę zaletę, że po przełączeniu się do innego okna raczej nie doznamy żadnego “szoku świetlnego”, jako że dokumentacje i większość stron internetowych trzymają się raczej jasnych barw.
Zaznaczam jednak, że ‘jasne’ tło nie musi wcale znaczyć ‘białe’. Dopasowując kontrast, dobrze jest poeksperymentować z tłem lekko żółtym, zielonym czy niebieskim. Nie należy aczkolwiek przesadzać i ustawiać mniej niż ~80-procentową intensywność w którymś z kanałów RGB – w efekcie tło będzie najprawdopodobniej zbyt ciemne.
Analogicznie warto też przyjrzeć się domyślnemu kolorowi kodu (zazwyczaj jest to ten stosowany do identyfikatorów w rodzaju zmiennych lokalnych). Nie musi on wcale być absolutnie czarny; zamiast tego można wypróbować coś w rodzaju RGB(30, 30, 30)
.
Oczywiście ów domyślny kolor kodu to zazwyczaj tylko jedna z wielu barw używanych przez IDE. Obecnie środowiska wyróżniają mnóstwo osobnych elementów kodu, pozwalając każdemu z nich mieć przypisany inny kolor. Nie zalecałbym jednak przesady w korzystaniu z tej funkcjonalności, bo przy odrobinie źle pojętej kreatywności możemy otrzymać schemat kolorów świecący niczym choinka, gdzie dodatkowo najdłuższy ciąg o tej samej barwie nie liczy więcej niż dwa wyrazy. Pamiętajmy, że tutaj ważna jest użyteczność. To, jak bardzo dany element jest wyróżniony i wygląda inaczej niż inne, powinno odpowiadać jego ważności. Typowa kolejność, począwszy od najbardziej istotnych tokenów, wygląda mniej więcej tak:
Ta lista może rzecz jasna podlegać dostosowaniu pod własne upodobania, a także pod możliwości używanego IDE (część nie obsługuje niestety kolorowania semantycznego, które rozróżnia np. typy od innych nazw). Każdy język dodałby tu też specyficzne dla siebie elementy, sytuujące się zazwyczaj gdzieś w drugiej połowie stawki. W końcu, wewnątrz każdej z tych grup możliwe są też dodatkowe rozróżnienia – lecz, jak już wspomniałem, należy korzystać z nich ostrożnie.
Co do Matrixowych kolorów, to zauważyłem po sobie i po innych, że kolor czarny jako tło jest dość “ciężki” dla oczu – natomiast jeżeli się go lekko podsyci (np. #121212), to staje się dużo znośniejszy. Choinka czasem się przydaje, zwłaszcza w połączeniu z “kolorowaniem semantycznym” – pamiętam swoje zdziwienie jak odkryłem, że kod, z którym musiałem pracować, używa (dokładnie) takiej samej nazwy dla klasy i jakiegoś property w jej środku. Jedyną rzeczą, po której można było szybko rozróżnić do czego autor odwoływał się w metodach, była lekka różnica w odcieniu koloru…
Czy w Visual C++ ’08 EE da się ustawić kilka schematów koloru? Tzn. chciałbym abym w dzień miał schemat kolorów z białym tłem, zaś w nocy z czarnym. I teraz nie znalazłem opcji aby przełączać pomiędzy tymi schematami – bo ręczne ustawianie tego wszystkiego to… odpada.
Nie należy aczkolwiek przesadzać i ustawiać więcej niż kilkunastoprocentowej intensywności w którymś z kanałów RGB – w efekcie tło będzie najprawdopodobniej zbyt ciemne.
Chyba na odwrót, biały to 100% intensywności :)
Słusznie! Dzięki za poprawkę.
@Fn: Możesz ustawić sobie schemat kolorystyczny, a następnie wyeksportować opcje VS’u do plików (da się zaznaczyć eksport tylko konkretnych fragmentów, np. właśnie ustawień kolorów i czcionek edytora). Późniejsze ładowanie takiego zestawu kolorów z pliku jest bardzo proste. Schemat, którego obecnie używam ściągnąłem z Internetu właśnie w postaci wyeksportowanych opcji VSa :).
Osobiście nie mogę patrzeć na kod na białym tle (zawsze mam kolor navy albo czarny) a dokumentacje na białym tle to faktycznie zmora :/ Największym problemem dowolnego tła poza białym i czarnym są jednak monitory LCD na matrycach o małych kątach widoczności które tworzą bardzo denerwujące gradienty.