У меня конечно куда скромнее замахи в вёрстке, сотен 5 строк от силы, но id стараюсь присваивать лишь действительно важным элементам, которые взаимодействуют со сценариями или являются якорями. А с именами классов совсем не парюсь, главное чтобы они отображали суть, а если хотят — пусть повторяются, так как в css использую правила вложенности, то есть:
.header {}
.element-1 .header {}
.element-2 .header {}