Let's start with the idea of โโBEM or SMACSS.
The main task that any methodology solves is the structuring and modulation of your code.
For example, BEM uses the following abstractions:
A block is an independent part of the user interface (for example, a feedback form),
An element - part of a block can not exist without a block (for example, a feedback form button)
Modifier - an assistant that allows you to change a block or element (for example, make a button larger or smaller).
SMACSS uses different abstractions: module, layout, base, state, theme. To clearly understand this idea, imagine that your html page contains logical layers,
1) BASE - you add css dumps, determine the font sizes H1, H2 ..., determine the colors. Thus, in the database you put things, and should not change.
2) LAYOUT - adds a grid or a separate page in the regions. 3) Module - an independent content item
3) STATUS - very close to the BEM modifier, but is associated with some action with the module, for example, is_hided, is_collapsed
4) Theme - can be used to override BASE.
So, to separate these abstractions, you have to follow a specific naming convention so that you can first take a look at what this class does. If you adhere to the naming convention, it is also much easier to support you in the project6 so that he easily explains to the members of the new team how the code is organized and how to write new code that looks like one person wrote it.
Its extremely important in large-scale projects with large teams.
In addition, naming conventions help reduce the number of descendant selectors that improve performance.