TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.5K subscribers
Post #209 11.9K
Что такое solid ?
Спросят с вероятностью 7%

Принципы SOLID — это набор из пяти принципов ООП, которые помогают разработчикам создавать более понятный, гибкий и поддерживаемый код. Эти принципы были популяризированы Робертом Мартином (Robert C. Martin), также известным как "дядя Боб". Вот что обозначает каждый принцип:

1️⃣Single Responsibility Principle (Принцип единственной ответственности):
✅Каждый класс должен иметь одну и только одну причину для изменения, то есть одну ответственность.
✅Это помогает сделать код более понятным и облегчает его поддержку, так как каждая часть кода отвечает только за одну конкретную задачу.
        // Пример плохого кода
class User {
void saveToDatabase() {
// сохраняет пользователя в базу данных
}

void sendEmail() {
// отправляет приветственное письмо пользователю
}
}

// Пример хорошего кода
class UserRepository {
void save(User user) {
// сохраняет пользователя в базу данных
}
}

class EmailService {
void sendWelcomeEmail(User user) {
// отправляет приветственное письмо пользователю
}
}


2️⃣Open/Closed Principle (Принцип открытости/закрытости):
✅Программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации.
✅Это означает, что мы должны иметь возможность добавлять новый функционал без изменения существующего кода.
        // Пример плохого кода
class Rectangle {
void draw() {
// рисует прямоугольник
}
}

class Circle {
void draw() {
// рисует круг
}
}

class GraphicEditor {
void drawShape(Object shape) {
if (shape instanceof Rectangle) {
((Rectangle) shape).draw();
} else if (shape instanceof Circle) {
((Circle) shape).draw();
}
}
}

// Пример хорошего кода
interface Shape {
void draw();
}

class Rectangle implements Shape {
public void draw() {
// рисует прямоугольник
}
}

class Circle implements Shape {
public void draw() {
// рисует круг
}
}

class GraphicEditor {
void drawShape(Shape shape) {
shape.draw();
}
}


3️⃣Liskov Substitution Principle (Принцип подстановки Барбары Лисков):
✅Объекты в программе должны быть заменяемы экземплярами их подклассов без изменения правильности выполнения программы.
✅То есть, подклассы должны дополнять, а не изменять поведение базового класса.
        // Пример плохого кода
class Bird {
void fly() {}
}

class Ostrich extends Bird {
void fly() {
throw new UnsupportedOperationException();
}
}

// Пример хорошего кода
class Bird {}

class FlyingBird extends Bird {
void fly() {}
}

class Ostrich extends Bird {}

class Sparrow extends FlyingBird {
void fly() {
// реализация полета для воробья
}
}


Принципы SOLID помогают писать код, который легко поддерживать и расширять. Это набор правил, которые говорят о том, как разделять обязанности между классами, как правильно наследовать и как строить интерфейсы и зависимости.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
  • 👍 30
  • ❤ 8
  • 🤯 2
  • 🎉 2
  • 💊 1
More from @easy_javascript_ru
  1. Oct 18, 2026Post #3049
  2. Oct 18, 2026🤔 Что такое делегирование? Делегирование событий (Event Delegation) — это техника, при ко…
  3. Oct 17, 2026🤔 Откуда взялся CSS? CSS (Cascading Style Sheets) появился в 1996 году для отделения стил…
  4. Oct 17, 2026🤔 Какие значения будут являться falsy значениями? В JavaScript значения, которые при прив…
  5. Oct 16, 2026🤔 Что такое meta теги? Meta-теги – это специальные HTML-теги, которые содержат метаинформ…
  6. Oct 15, 2026🤔 Какие преимущества у di? Dependency Injection (DI) – это паттерн проектирования, которы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →