Закон Деметры (Law of Demeter), также известный как принцип наименьшего знания, гласит, что модуль (или класс) должен иметь ограниченное знание о других модулях (или классах). Другими словами, объект должен взаимодействовать только с непосредственными зависимостями, а не с внутренними структурами зависимостей.
Virtual DOM (виртуальный DOM) — это концепция, используемая в ряде библиотек и фреймворков для повышения производительности веб-приложений при изменении пользовательского интерфейса. Основные принципы Virtual DOM и его взаимодействие с Angular можно объяснить следующим образом:
"Функциональная зависть" (Functionality Envy) - это термин из области объектно-ориентированного программирования, описывающий ситуацию, когда метод одного класса чрезмерно использует данные другого класса. Это говорит о том, что метод "завидует" другому классу, желая использовать его данные и функциональность, вместо того чтобы выполнять задачи, которые он должен выполнять внутри своего класса.
Паттерн "Стратегия" (Strategy Pattern) — это поведенческий паттерн проектирования, который определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми. Паттерн позволяет выбрать алгоритм во время выполнения программы.
Принцип наименьшего удивления (Principle of Least Astonishment, PLA) гласит, что компоненты системы должны вести себя так, как ожидает пользователь или разработчик. Если код или интерфейс ведут себя неожиданно, это может привести к ошибкам и разочарованию.
Паттерн Декоратор (Decorator) позволяет динамически добавлять новое поведение объектам. В контексте Angular и TypeScript, декораторы могут быть использованы для обогащения классов, методов или свойств дополнительной функциональностью.
Рассмотрим пример, где у нас есть три компонента: ComponentA, ComponentB, и ComponentC, которые взаимодействуют друг с другом через посредника.
Паттерн "Абстрактная фабрика" (Abstract Factory) предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретные классы. Этот паттерн полезен, когда система должна быть независимой от процесса создания, компоновки и представления продуктов.
Паттерн Адаптер (Adapter Pattern) — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе. Адаптер выступает в роли посредника, который преобразует интерфейс одного класса в интерфейс, ожидаемый клиентом.
Наткнулся на интересное для себя понятие "Учебные тесты". Они описаны в книге Джима Ньюкирка по TDD. Эти тесты нужны для того, чтобы понять, как работает внешний код или библиотека. Эти тесты не обязательно являются частью окончательной тестовой базы, но служат важной цели - они помогают разработчикам исследовать и анализировать границы внешних библиотек и инструментов, которые они используют.