Код должен решать определенную задачу. Читать абстрактный код без понимания сути решаемой им задачи - бессмысленное занятие. Т.е. вы должны сначала вникнуть в задачу и хотя бы в черне представить как бы вы ее решали. В этом случае, читая код, уже можно оценивать те приемы, которые там применены.
У меня сложилась такая практика: когда мне требуется использовать библиотеку, в которой реализован нужный мне функционал (т.е. я изначально уже знаю какую задачу должна решать библиотека), я сначала читаю обзорно документацию на нее, потом лезу в исходники и смотрю как оно там все устроено. Некоторые библиотеки после такого анализа отбраковываются, из других можно вынести для себя что-то полезное, но в любом случае начинаешь лучше понимать как работает библиотека.
На изучение кода толстых библиотек может уйти много времени, поэтому смотрю только какую-то небольшую часть, которая нужна в данном конкретном случае.
Многие просмотренные мной библиотеки написаны не плохо с моей точки зрения, но на сколько они "эталонно красивы" судить не берусь.
В целом считаю, что читать чужой код - полезный навык. Но все таки умение программировать самому еще более полезный. Поэтому надо правильно расставить приоритеты.