kamyshev.code
1.9K subscribers
40 photos
565 links
Архитектура, код, софт-скиллы и всё остальное. Вопросы, пожелания, комментарии — @igorkamyshev

https://kamyshev.me
Download Telegram
​​Мудрость из книги

Любой публичный интерфейс должен быть информативен. Если это интерфейс класса, то любой метод должен своим именем выражать, что он делает. Причем не как, а что.

Никогда не следует раскрывать детали реализации в интерфейсе.

Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".

#ddd
​​Онлайн-курс и Нужная книга

Программист, которые не имеет базовых знаний алгоритмов — странный программист. И уж точно такой разработчик стоит сильно меньше, чем его начитанный коллега.

Где научиться? Три варианта разной степени сложности.

1. Книга "Грокаем алгоритмы". Она простая, дружелюбная к читателю и даёт хорошие базовые знания.
2. Англоязычный платный курс Algorithmic Toolbox от Coursera. Качественный, с крутыми задачами и хорошими лекциями. Кстати, учащиеся могут написать письмо и получить курс бесплатно.
3. Русскоязычный бесплатный курс на Stepik. Не хуже, чем аналогичные от Coursera, даже преподавательский состав похож. Но задач меньше.

#обшие_знания
​​Исследуя GitHub

Часто хочу кому-нибудь отправить кусок кода картинкой. И это так заморочено. Нужно же с подсветкой, красивым форматированием и вот этим всем.

Утилита, которая сама все это делает — https://github.com/dawnlabs/carbon
​​Мудрость из книги

Все действия лучше разделить на "команды" и "запросы".

Запросы не могут изменить состояние приложения. Они только возвращают данные по каким-то критериям. Никаких побочных эффектов!

Команды изменяют состояние приложения. Но ничего не возвращают (иначе будет соблазн использовать их как запросы).

Это помогает контролировать сложность приложения.

Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".

#ddd
​​Нужная книга

Этим летом прочел "Чистый код" Роберта Мартина. Пожалуйста, это одна из самых полезных книг по программированию, что я читал.

Всем причастным очень рекомендую. Это не книга о конкретном языке программирования, а о конструировании программ в целом. О способах сделать работу хорошо, так чтобы пришедшие на проект после вас не страдали, а были благодарны.

Кстати, стоит помнить, что этими "пришедшими" может быть и автор кода, но через несколько месяцев, когда проект стерся из памяти и нужно изучать код заново.

#чистый_код
​​Проектирование

Меня с неделю назад спросили, можно ли использовать какие-нибудь паттерны проектирования в функциональном программировании.

Тут важно понять, что сейчас мы не пишем программы в чисто объектном стиле, или чисто функциональном стиле. Это чаще всего синергия подходов.

Но все же, некоторые системы ближе к ФП. В них можно использовать часть паттернов из ООП-мира, и часть специфических.

Пример — инверсия зависимости через компоненты высшего порядка в React. Такие компоненты дополняют пропсы оригинального компонента какими-то новыми, в которых могут содержаться функции выполняющие определенные действия. Например, запросы к API. При этом, конечный компонент не беспокоится о том, какая реализация API клиента к нему попала и откуда она взялась.

#проектирование
​​Мудрость из книги

Рефакторинг — это очень важно. Он помогает сохранить гибкость системы на любом этапе ее жизненного цикла.

"Не возводите ничего в абсолют, но всегда жертвуйте комфортом в пользу рефакторинга."

Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".

#ddd
​​Мудрость из книги

Нельзя допускать, чтобы код у разных членов команды сильно отличался. На страже этого стоит непрерывная интеграция. Речь идёт не только, и не столько, о тестах и линтерах на CI-сервере. Куда важнее постоянно интегрировать модель предметной области. Искоренять дубликаты понятий, изучать домен глубже.

Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".

#ddd
​​Мудрость из книги

Последние главы были о сосуществовании новой системы с крутой моделью и какой-то другой.

Если вторая система очень старая и "грязная" можно ввести предохранительный уровень. Это место, в котором сконцентрировано общение новой и старой модели. Грязь не может проползти в новую систему, а старая система не вынуждена подстраиваться под новую.

Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".

#ddd
​​Нужная книга

Дочитал "Предметро-ориентированное проектирование" Эрика Эванса.

Думаю, через год следует перечитать и посмеяться над собой.

Книга монументальна. В ней изложен совершенно непривычный для меня способ построения приложений. В нем следует концентрироваться на бизнес-области заказчика, много работать со специалистами и думать головой.

Читать стоит, причем несколько раз, с некоторыми интервалами.

#ddd
​​Ссылка

Хекслет — крутые. Недавно они выложили список хороших практик для разработки.

Стоит ознакомиться.

#общие_знания
​​Проектирование

В функциональной парадигме есть крутой концепт — паттерн матчинг (не смог перевести на русский, потому что сопоставление с образцом звучит как-то глупо).

Суть в простом выборе пути выполнения кода по форме входящего объекта.

Проще всего понять посмотрев на пример.


const result = matches(1)(
(x = 2) => 'number 2 is the best!!!',
(x = Number) => 'other number is not that good',
(x = Date) => 'blaa.. dates are awful!' )


Результатом будет надпись other number is not that good.

Почему не набор if-ов? Просто так короче и красивее.

И в догонку хорошая библиотека для JS — z.

#фп
​​Ссылка

Многие программисты перестают любить свою работу со временем. Это неизбежно снижает эффективность.

Чуть больше года назад я столкнулся с апатией на работе, противное ощущение. Придумал три правила, которые помогли справиться и снова полюбить работу.

Рассказал об этом на Tproger.

#softskills
​​Мудрость из книги

Начал читать "Чистую архитектуру" дядюшки Боба.

Введение объясняет, почему архитектура важна.

+ Если строить приложение на скорую руку цена новых фич очень быстро растет. В какой-то момент развитие продукта может и совсем остановиться.

+ "Потом сделаем нормально" — "потом" никогда не наступит и приложение превратиться в тыкву.

+ То что можно сделать быстро и плохо, выйти на рынок, а потом исправить все — миф. После выхода на рынок будут давить конкренты и другие причине не делать хорошо.

+ Желание все переписать с нуля — оно от лени. Любое приложение можно привести в порядок итеративно. Некоторые сложнее, некоторые проще, но любые можно.

Конспект книги Роберта Мартина "Чистая архитектура".

#чистая_архитектура #проектирование
​​Мудрость из книги

У программ есть две ценности: структура и поведение.

Поведение обеспечивает корректную работу приложения, а структура возможность изменять поведение.

Многие команды концентрируются только на поведении. Тогда с каждым изменением требований изменять программу все сложнее.

На самом деле, структура — бОльшая ценность. Если программа работает правильно, но в неё нельзя вносить правки, она быстро придет в негодность. Если программа работает неправильно, но можно вносить правки без проблем, то ее легко заставить работать правильно.

Выбор между этими двумя ценностями — всегда борьба. И разработчики должны убеждать другие заинтересованные стороны, что структура важнее поведения.

Конспект книги Роберта Мартина "Чистая архитектура".

#чистая_архитектура #проектирование
​​Мудрость из книги

Наличие тестов не гарантирует, что программа работает правильно. Напротив, тестами можно доказать наличие ошибок.

То есть тесты доказывают только, что программа работает достаточно корректно.

Конспект книги Роберта Мартина "Чистая архитектура".

#чистая_архитектура #проектирование
​​Мудрость из книги

Программы формулируются на основе трех парадигм.

Первым широкой публике стало известно структурное программирование. Предлагается отказаться от переходов (go to) в пользу условных операторов (if-then-else) и циклов (do-while-until).

Таким образом, структурное программирование накладывает ограничение на прямую передачу управления.

Конспект книги Роберта Мартина "Чистая архитектура".

#чистая_архитектура #проектирование
​​Мудрость из книги

Программы формулируются на основе трех парадигм.

Потом пришло ООП.

Сразу несколько разрушение нескольких ошибочных суждений:
+ Это не про связывание данных и функций над ними — cat.walk() эквивалентно walk(cat).
+ Это не про инкапсуляцию — ее можно организовать через заголовочные файлы в C, или через замыкания.
+ Это не про наследование. Можно было и раньше, просто довольно криво. Да и вообще это часто вредное свойство ООП-систем.
+ Это не про полиморфизм. Обеспечить полиморфное поведение можно имея в распоряжении только функции.

На самом деле, ООП дало важный концепт — инверсию зависимостей. А это позволило писать системы основанные на плагинах, которые легко расширять и изменять. Не так давно писал об этом.

Короче, объектно-ориентированное проектирование накладывает ограничение на косвенную передачу управления.

Конспект книги Роберта Мартина "Чистая архитектура".

#чистая_архитектура #проектирование
​​Онлайн курс

Недавно Родионов выложил в открытый доступ два своих курса.

Они хорошие.

#react #frontend
Forwarded from Фронтэнд
Забирайте материалы курсов по вёрстке и Реакту

Вёрстка
Первый этап
Второй
Третий

Реакт
Первый этап
Второй
Третий