Я не использую id вообще, определяю врэпы ну или блоки просто, чтобы было можно легко все местами поменять и ничего не поехало. И стараюсь не создавать классов для элементов.
мы имеем главный блок-врэп с двумя - тремя классами напримпер .time и .block, а они содержат какие то элементы или другие блоки (у которых могут быть классы) а внутри элементы у которых не может быть класса и задаем относительно блока, например .time > button и тд,
Получается удобное наследование классов в верстке + мы точно занем поведение, что как и куда встанет. Что касается почему я не юзаю у элементов классы, то
1) это не захломляет имена
2) обычно однорродные элементы находятся внутри блока, если элементы разного рода то они должны быть распределены по блокам и путаницы не возникает.
ну тоже на БЭМ похоже