Наследование
Как-то уже писал, что не люблю наследование и считаю его ключевой проблемой объектно-ориентированного дизайна. В субботу ходил на митап, в одном из докладов сравнивалось создание бибилиотеки компонентов основанной на наследовании и основанной на композиции. Ожидаемо, композиция оказалсь более гибкой.
Посмотрите презентацию, в ней очень наглядные примеры.
#ссылка
Как-то уже писал, что не люблю наследование и считаю его ключевой проблемой объектно-ориентированного дизайна. В субботу ходил на митап, в одном из докладов сравнивалось создание бибилиотеки компонентов основанной на наследовании и основанной на композиции. Ожидаемо, композиция оказалсь более гибкой.
Посмотрите презентацию, в ней очень наглядные примеры.
#ссылка
Современный веб пронизан фреймворками. Это не плохо! Проекты запускается быстро, а поддерживать их легко. Но иногда стоит избегать использования сторонних решений.
Проникся этой идеей и переписал свой сайт с Next.js (обвязка вокруг React) на чистый JS/CSS/HTML. Стало быстро, очень быстро. Новый сайт задизайнил Дима Журавлев.
Мой опыт — Как сделать сайт легким и быстрым без проблем
#производительность
Проникся этой идеей и переписал свой сайт с Next.js (обвязка вокруг React) на чистый JS/CSS/HTML. Стало быстро, очень быстро. Новый сайт задизайнил Дима Журавлев.
Мой опыт — Как сделать сайт легким и быстрым без проблем
#производительность
Вебпак
Я не умею конфигурировать Вебпак. И потому всегда с удовольствием смотрю доклады и читаю статьи о том как этому научиться.
Крутой доклад "Вебпак, вид сквозь монокль" про оптимизацию билда, DX и, внезапно, функциональные линзы для управления конфигами.
#производительность
Я не умею конфигурировать Вебпак. И потому всегда с удовольствием смотрю доклады и читаю статьи о том как этому научиться.
Крутой доклад "Вебпак, вид сквозь монокль" про оптимизацию билда, DX и, внезапно, функциональные линзы для управления конфигами.
#производительность
YouTube
003. Вебпак, вид сквозь монокль - Антон Кастрицкий
Рассмотрим хорошие практики современных сборщиков в мире фронтенда. Разберём популярные проблемы. Попрощаемся со страхом копания в конфигах, а также узнаем, как настроить вебпак со снайперской точностью.
Презентация по ссылке: https://events.yandex.ru/lib/talks/6980/
Презентация по ссылке: https://events.yandex.ru/lib/talks/6980/
Магия
Поведение системы должно быть предсказумым. И чем проще сказать как поведет себя система в той или иной ситуации просто посмотрев на ее код, тем лучше.
Есть два хороших маркера понятности системы:
+ Отсутствие внутреннего состояния. Если функция (класс, модуль) в работе основывается только на принятые параметры, его не только легко тестировать, но и проще понимать.
+ Разделение чтения и записи. Функция не должна возвращать что-то, если она изменяет внешний мир. И напротив, если функция что-то возвращает, то она не может мутировать ничего.
Пример неочевидного поведения — некотрые методы регулярных выражений в JS.
#архитектура
Поведение системы должно быть предсказумым. И чем проще сказать как поведет себя система в той или иной ситуации просто посмотрев на ее код, тем лучше.
Есть два хороших маркера понятности системы:
+ Отсутствие внутреннего состояния. Если функция (класс, модуль) в работе основывается только на принятые параметры, его не только легко тестировать, но и проще понимать.
+ Разделение чтения и записи. Функция не должна возвращать что-то, если она изменяет внешний мир. И напротив, если функция что-то возвращает, то она не может мутировать ничего.
Пример неочевидного поведения — некотрые методы регулярных выражений в JS.
#архитектура
ФП
Функциональное программирование помогает избежать магического поведения системы.
+ Если все функции чистые, то они никак не могут иметь внутреннего состояния и всегда зависят только от своих параметров.
+ Если все структуры данных иммутабельны, то невозможно написать функцию изменяющую какие-то данные.
Функциональные подходы применимы почти к любой системе и всегда они повышают ее надежность.
#архитектура
Функциональное программирование помогает избежать магического поведения системы.
+ Если все функции чистые, то они никак не могут иметь внутреннего состояния и всегда зависят только от своих параметров.
+ Если все структуры данных иммутабельны, то невозможно написать функцию изменяющую какие-то данные.
Функциональные подходы применимы почти к любой системе и всегда они повышают ее надежность.
#архитектура
Ещё один язык
Попробовал ReasonML. Это такое расширение OCaml, которое компилируется в JavaScript. Язык строго статически типизированный, как я люблю.
Интересно, что код на нем работает быстрее, чем JS за счёт использования более оптимальных структур данных.
В целом, код писать весело, язык приятный. Но его экзотичность, малое количество библиотек и слабый тулинг не дают насладиться в полной мере. Стоит попробовать для расширения кругозора.
Хорошая книга на тему — Exploring ReasonML
and functional programming.
#языки
Попробовал ReasonML. Это такое расширение OCaml, которое компилируется в JavaScript. Язык строго статически типизированный, как я люблю.
Интересно, что код на нем работает быстрее, чем JS за счёт использования более оптимальных структур данных.
В целом, код писать весело, язык приятный. Но его экзотичность, малое количество библиотек и слабый тулинг не дают насладиться в полной мере. Стоит попробовать для расширения кругозора.
Хорошая книга на тему — Exploring ReasonML
and functional programming.
#языки