Я юзаю паттерн БЭМ, где все интерфейсные элементы абстрактно представляются, как атомарные блоки, а их состояния задаются через специальные модификаторы. Почитать описание паттерна можно на
http://ru.bem.info/method/
Сразу скажу, что в личных проектах я не юзаю i-bem фреймворк Яндекса, т.к. он мне не нравится, а написал свой микро каркас. На работе разумеется приходиться работать с i-bem. Не нравится потому:
1) Слишком много туда засунули;
2) Излишнее количество неймспейсов и не самое приятное АПИ методов;
3) Не нравится их шаблонизатор;
4) Лишняя зависимость от jQuery и Яндекса (вдруг ребята из Лего захотят поменять концепцию и у меня всё сломается).
А сам паттерн очень удобен для больших проектов, всё просто и очевидно, даже когда кода становится ну очень много, но следует отметить, что для маленьких проектов такой подход лучше не юзать, лишняя не нужная трата времени.