Ответ
SOLID, DRY, KISS, YAGNI.
SOLID:
- Single Responsibility - компонент делает одну вещь.
- Open/Closed - открыт для расширения, закрыт для изменений.
- Liskov Substitution - наследники не ломают поведение родителя.
- Interface Segregation - узкие интерфейсы лучше одного "жирного".
- Dependency Inversion - зависимости на абстракциях, не на реализациях.
DRY (Don't Repeat Yourself):
// Плохо: дублирование
const ButtonA = () => <button className="primary">Click</button>;
const ButtonB = () => <button className="primary">Submit</button>;
// Хорошо: переиспользуемый компонент
const Button = ({ text }) => <button className="primary">{text}</button>;
KISS (Keep It Simple, Stupid): избегаю избыточной сложности там, где можно решить проще.
YAGNI (You Aren't Gonna Need It): не добавляю функциональность "на будущее".