Programming & QA
331 subscribers
271 photos
177 links
Smartiqa - платформа о технологиях, программировании и тестировании ПО.

Сайт: https://smartiqa.ru
Канал YouTube: https://www.youtube.com/channel/UCk_7MNLSD0S2fxi0EQ-V6lQ
Vkontakte: https://vk.com/smartiqa
Vkontakte Python: https://vk.com/smartiqa_python
Download Telegram
Вопрос №108

Тема: Основы программирования. Проектирование.

Q: Расскажите про паттерн проектирования Observer (Наблюдатель).

A: Наблюдаем за списком объектов. При возникновении события оповещаем каждый их них.
Вопрос №109

Тема: Основы программирования. Проектирование.

Q: Расскажите про паттерн проектирования Abstract Factory (Абстрактная фабрика).

A: В приведенном примере метод create_form_with_buttons(factory) создает объекты классов Form и Button на основе переданной фабрики (LinuxFactory или WindowsFactory). Класс AbstractFactory определяет фабричные методы create_form() и create_button() и передает их по наследству классам LinuxFactory и WindowsFactory.
🔥1
Вопрос №110

110
Тема: Основы программирования. Проектирование.

Q: Что такое Принцип YAGNI?

A: Расшифровывается как You Aren't Gonna Need It (Вам это не понадобится). Пишем код, только если уверены, что он нужен. При рефакторинге не боимся удалять ненужные методы.
👍2
👍4
Вопрос №111

Тема: Основы программирования. Проектирование.

Q: Что такое Принцип DRY?

A: Расшифровывается как Don't Repeat Yourself (Не повторяйтесь). Нужно избегать дублирования кода.
Вопрос №112

Тема: Основы программирования. Проектирование.

Q: Что такое Принцип KISS?

A: Расшифровывается как Keep It Simple, Stupid (Будь проще). Чем проще, тем надежнее.
Вопрос №113

Тема: Основы программирования. Проектирование.

Q: Что такое Принцип Big Design Up Front?

A: Переводится как "Глобальное проектирование прежде всего". Сначала проектируем, и только потом приступаем к реализации.
Вопрос №115

Тема: Основы программирования. Проектирование.

Q: Что такое Принцип SOLID? На какие под-принципы его можно разделить?

A: Делится на 5 принципов.

1) S (Single-responsibility principle): каждый класс/метод должен отвечать только за что-то одно.

2) O (Open–closed principle): Программные объекты должны быть открыты для расширения, но закрыты для модификации. Пример - наследование.

3) L (Liskov substitution principle): Можно заменить использование класса-родителя его потомком и в работе программы ничего не изменится.

4) I (Interface segregation principle): Объекты не должны зависеть от интерфейсов, которые они используют. То есть если мы создаем интерфейс, то не нужно делать обязательными методы, которые пригодятся только некоторым объектам, использующим этот интерфейс. Например интерфейс Animal с методами eat() и fly() - не все животные могут летать.

5) D (Dependency inversion principle): Объекты программы должны иметь слабую связность с другими объектами. Нужно полагаться на абстракции, а не на конкретные реализации. Например, можно сделать абстракцию над Datetime() классом. И тогда при смене поставщика даты, нужно будет внести изменения только внутри этой абстракции.
👍1
👍2
👍4
Вопрос №116

Тема: Основы программирования. Проектирование.

Q: Что такое Бритва Оккама?

A: Не нужно множить сущности без необходимости.
🔥1
Вопрос №117

Тема: Основы программирования. Проектирование.

Q: Что такое Окно Овертона?

A: Это методика последовательного воздействия на разум общества, разделенная на 6 стадий: «Немыслимо», «Радикально», «Возможно», «Разумно», «Популярно», «Норма». Применительно к IT: когда приносим новую идею/фичу/подход на реализацию, то можем столкнуться с активным сопротивлением. Но если постепенно приходить с этой идей снова и снова (то есть двигать окно), то с большой вероятностью удастся ее популяризовать.