Naming things is by far the most difficult part of writing CSS. This is because we can’t predict the future. A class name might make perfect sense one day, then the design changes, and it’s a misnomer the next day. We’re then tasked with refactoring our markup and styles so that they make sense. Yuck.
Functional class names vs. Content-based class names vs. Presentational class names.
There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
— Phil Karlton