Actually, I know what you are saying... tho it really only applies to HTML. CSS is for styling, and while you may take a stab as to how to name classes and IDs so that a coder that comes after you can understand your logic. the best you can hope for is an educated guess. HTML is another thing, each tag DOES represent a HIERARCHY. But that all it does represent.
For example... a client may feel that he wants <H1> tobe the name of his company and <H2> to be the actual heading of the main story.... OR the other way around and give the brand ( name of the company) No semantic value whatsoever and use an H1 for the head of the lead story. Either method could be correct.
So then the important thing is, given that as I said before HTML defines the hierarchy, to let know what is your ( or your clients) own meaning and hierarchy.