Мудрость из книги
Любой публичный интерфейс должен быть информативен. Если это интерфейс класса, то любой метод должен своим именем выражать, что он делает. Причем не как, а что.
Никогда не следует раскрывать детали реализации в интерфейсе.
Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".
#ddd
Любой публичный интерфейс должен быть информативен. Если это интерфейс класса, то любой метод должен своим именем выражать, что он делает. Причем не как, а что.
Никогда не следует раскрывать детали реализации в интерфейсе.
Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".
#ddd
Онлайн-курс и Нужная книга
Программист, которые не имеет базовых знаний алгоритмов — странный программист. И уж точно такой разработчик стоит сильно меньше, чем его начитанный коллега.
Где научиться? Три варианта разной степени сложности.
1. Книга "Грокаем алгоритмы". Она простая, дружелюбная к читателю и даёт хорошие базовые знания.
2. Англоязычный платный курс Algorithmic Toolbox от Coursera. Качественный, с крутыми задачами и хорошими лекциями. Кстати, учащиеся могут написать письмо и получить курс бесплатно.
3. Русскоязычный бесплатный курс на Stepik. Не хуже, чем аналогичные от Coursera, даже преподавательский состав похож. Но задач меньше.
#обшие_знания
Программист, которые не имеет базовых знаний алгоритмов — странный программист. И уж точно такой разработчик стоит сильно меньше, чем его начитанный коллега.
Где научиться? Три варианта разной степени сложности.
1. Книга "Грокаем алгоритмы". Она простая, дружелюбная к читателю и даёт хорошие базовые знания.
2. Англоязычный платный курс Algorithmic Toolbox от Coursera. Качественный, с крутыми задачами и хорошими лекциями. Кстати, учащиеся могут написать письмо и получить курс бесплатно.
3. Русскоязычный бесплатный курс на Stepik. Не хуже, чем аналогичные от Coursera, даже преподавательский состав похож. Но задач меньше.
#обшие_знания
Исследуя GitHub
Часто хочу кому-нибудь отправить кусок кода картинкой. И это так заморочено. Нужно же с подсветкой, красивым форматированием и вот этим всем.
Утилита, которая сама все это делает — https://github.com/dawnlabs/carbon
Часто хочу кому-нибудь отправить кусок кода картинкой. И это так заморочено. Нужно же с подсветкой, красивым форматированием и вот этим всем.
Утилита, которая сама все это делает — https://github.com/dawnlabs/carbon
Мудрость из книги
Все действия лучше разделить на "команды" и "запросы".
Запросы не могут изменить состояние приложения. Они только возвращают данные по каким-то критериям. Никаких побочных эффектов!
Команды изменяют состояние приложения. Но ничего не возвращают (иначе будет соблазн использовать их как запросы).
Это помогает контролировать сложность приложения.
Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".
#ddd
Все действия лучше разделить на "команды" и "запросы".
Запросы не могут изменить состояние приложения. Они только возвращают данные по каким-то критериям. Никаких побочных эффектов!
Команды изменяют состояние приложения. Но ничего не возвращают (иначе будет соблазн использовать их как запросы).
Это помогает контролировать сложность приложения.
Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".
#ddd
Нужная книга
Этим летом прочел "Чистый код" Роберта Мартина. Пожалуйста, это одна из самых полезных книг по программированию, что я читал.
Всем причастным очень рекомендую. Это не книга о конкретном языке программирования, а о конструировании программ в целом. О способах сделать работу хорошо, так чтобы пришедшие на проект после вас не страдали, а были благодарны.
Кстати, стоит помнить, что этими "пришедшими" может быть и автор кода, но через несколько месяцев, когда проект стерся из памяти и нужно изучать код заново.
#чистый_код
Этим летом прочел "Чистый код" Роберта Мартина. Пожалуйста, это одна из самых полезных книг по программированию, что я читал.
Всем причастным очень рекомендую. Это не книга о конкретном языке программирования, а о конструировании программ в целом. О способах сделать работу хорошо, так чтобы пришедшие на проект после вас не страдали, а были благодарны.
Кстати, стоит помнить, что этими "пришедшими" может быть и автор кода, но через несколько месяцев, когда проект стерся из памяти и нужно изучать код заново.
#чистый_код
Проектирование
Меня с неделю назад спросили, можно ли использовать какие-нибудь паттерны проектирования в функциональном программировании.
Тут важно понять, что сейчас мы не пишем программы в чисто объектном стиле, или чисто функциональном стиле. Это чаще всего синергия подходов.
Но все же, некоторые системы ближе к ФП. В них можно использовать часть паттернов из ООП-мира, и часть специфических.
Пример — инверсия зависимости через компоненты высшего порядка в React. Такие компоненты дополняют пропсы оригинального компонента какими-то новыми, в которых могут содержаться функции выполняющие определенные действия. Например, запросы к API. При этом, конечный компонент не беспокоится о том, какая реализация API клиента к нему попала и откуда она взялась.
#проектирование
Меня с неделю назад спросили, можно ли использовать какие-нибудь паттерны проектирования в функциональном программировании.
Тут важно понять, что сейчас мы не пишем программы в чисто объектном стиле, или чисто функциональном стиле. Это чаще всего синергия подходов.
Но все же, некоторые системы ближе к ФП. В них можно использовать часть паттернов из ООП-мира, и часть специфических.
Пример — инверсия зависимости через компоненты высшего порядка в React. Такие компоненты дополняют пропсы оригинального компонента какими-то новыми, в которых могут содержаться функции выполняющие определенные действия. Например, запросы к API. При этом, конечный компонент не беспокоится о том, какая реализация API клиента к нему попала и откуда она взялась.
#проектирование
Мудрость из книги
Нельзя допускать, чтобы код у разных членов команды сильно отличался. На страже этого стоит непрерывная интеграция. Речь идёт не только, и не столько, о тестах и линтерах на CI-сервере. Куда важнее постоянно интегрировать модель предметной области. Искоренять дубликаты понятий, изучать домен глубже.
Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".
#ddd
Нельзя допускать, чтобы код у разных членов команды сильно отличался. На страже этого стоит непрерывная интеграция. Речь идёт не только, и не столько, о тестах и линтерах на CI-сервере. Куда важнее постоянно интегрировать модель предметной области. Искоренять дубликаты понятий, изучать домен глубже.
Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".
#ddd
Мудрость из книги
Последние главы были о сосуществовании новой системы с крутой моделью и какой-то другой.
Если вторая система очень старая и "грязная" можно ввести предохранительный уровень. Это место, в котором сконцентрировано общение новой и старой модели. Грязь не может проползти в новую систему, а старая система не вынуждена подстраиваться под новую.
Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".
#ddd
Последние главы были о сосуществовании новой системы с крутой моделью и какой-то другой.
Если вторая система очень старая и "грязная" можно ввести предохранительный уровень. Это место, в котором сконцентрировано общение новой и старой модели. Грязь не может проползти в новую систему, а старая система не вынуждена подстраиваться под новую.
Конспект книги Эрика Эванса "Предметро-ориентированное проектирование".
#ddd
Нужная книга
Дочитал "Предметро-ориентированное проектирование" Эрика Эванса.
Думаю, через год следует перечитать и посмеяться над собой.
Книга монументальна. В ней изложен совершенно непривычный для меня способ построения приложений. В нем следует концентрироваться на бизнес-области заказчика, много работать со специалистами и думать головой.
Читать стоит, причем несколько раз, с некоторыми интервалами.
#ddd
Дочитал "Предметро-ориентированное проектирование" Эрика Эванса.
Думаю, через год следует перечитать и посмеяться над собой.
Книга монументальна. В ней изложен совершенно непривычный для меня способ построения приложений. В нем следует концентрироваться на бизнес-области заказчика, много работать со специалистами и думать головой.
Читать стоит, причем несколько раз, с некоторыми интервалами.
#ddd
Ссылка
Хекслет — крутые. Недавно они выложили список хороших практик для разработки.
Стоит ознакомиться.
#общие_знания
Хекслет — крутые. Недавно они выложили список хороших практик для разработки.
Стоит ознакомиться.
#общие_знания
Проектирование
В функциональной парадигме есть крутой концепт — паттерн матчинг (не смог перевести на русский, потому что сопоставление с образцом звучит как-то глупо).
Суть в простом выборе пути выполнения кода по форме входящего объекта.
Проще всего понять посмотрев на пример.
Результатом будет надпись
Почему не набор if-ов? Просто так короче и красивее.
И в догонку хорошая библиотека для JS — z.
#фп
В функциональной парадигме есть крутой концепт — паттерн матчинг (не смог перевести на русский, потому что сопоставление с образцом звучит как-то глупо).
Суть в простом выборе пути выполнения кода по форме входящего объекта.
Проще всего понять посмотрев на пример.
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
Многие программисты перестают любить свою работу со временем. Это неизбежно снижает эффективность.
Чуть больше года назад я столкнулся с апатией на работе, противное ощущение. Придумал три правила, которые помогли справиться и снова полюбить работу.
Рассказал об этом на Tproger.
#softskills
Мудрость из книги
Начал читать "Чистую архитектуру" дядюшки Боба.
Введение объясняет, почему архитектура важна.
+ Если строить приложение на скорую руку цена новых фич очень быстро растет. В какой-то момент развитие продукта может и совсем остановиться.
+ "Потом сделаем нормально" — "потом" никогда не наступит и приложение превратиться в тыкву.
+ То что можно сделать быстро и плохо, выйти на рынок, а потом исправить все — миф. После выхода на рынок будут давить конкренты и другие причине не делать хорошо.
+ Желание все переписать с нуля — оно от лени. Любое приложение можно привести в порядок итеративно. Некоторые сложнее, некоторые проще, но любые можно.
Конспект книги Роберта Мартина "Чистая архитектура".
#чистая_архитектура #проектирование
Начал читать "Чистую архитектуру" дядюшки Боба.
Введение объясняет, почему архитектура важна.
+ Если строить приложение на скорую руку цена новых фич очень быстро растет. В какой-то момент развитие продукта может и совсем остановиться.
+ "Потом сделаем нормально" — "потом" никогда не наступит и приложение превратиться в тыкву.
+ То что можно сделать быстро и плохо, выйти на рынок, а потом исправить все — миф. После выхода на рынок будут давить конкренты и другие причине не делать хорошо.
+ Желание все переписать с нуля — оно от лени. Любое приложение можно привести в порядок итеративно. Некоторые сложнее, некоторые проще, но любые можно.
Конспект книги Роберта Мартина "Чистая архитектура".
#чистая_архитектура #проектирование
Мудрость из книги
У программ есть две ценности: структура и поведение.
Поведение обеспечивает корректную работу приложения, а структура возможность изменять поведение.
Многие команды концентрируются только на поведении. Тогда с каждым изменением требований изменять программу все сложнее.
На самом деле, структура — бОльшая ценность. Если программа работает правильно, но в неё нельзя вносить правки, она быстро придет в негодность. Если программа работает неправильно, но можно вносить правки без проблем, то ее легко заставить работать правильно.
Выбор между этими двумя ценностями — всегда борьба. И разработчики должны убеждать другие заинтересованные стороны, что структура важнее поведения.
Конспект книги Роберта Мартина "Чистая архитектура".
#чистая_архитектура #проектирование
У программ есть две ценности: структура и поведение.
Поведение обеспечивает корректную работу приложения, а структура возможность изменять поведение.
Многие команды концентрируются только на поведении. Тогда с каждым изменением требований изменять программу все сложнее.
На самом деле, структура — бОльшая ценность. Если программа работает правильно, но в неё нельзя вносить правки, она быстро придет в негодность. Если программа работает неправильно, но можно вносить правки без проблем, то ее легко заставить работать правильно.
Выбор между этими двумя ценностями — всегда борьба. И разработчики должны убеждать другие заинтересованные стороны, что структура важнее поведения.
Конспект книги Роберта Мартина "Чистая архитектура".
#чистая_архитектура #проектирование
Мудрость из книги
Наличие тестов не гарантирует, что программа работает правильно. Напротив, тестами можно доказать наличие ошибок.
То есть тесты доказывают только, что программа работает достаточно корректно.
Конспект книги Роберта Мартина "Чистая архитектура".
#чистая_архитектура #проектирование
Наличие тестов не гарантирует, что программа работает правильно. Напротив, тестами можно доказать наличие ошибок.
То есть тесты доказывают только, что программа работает достаточно корректно.
Конспект книги Роберта Мартина "Чистая архитектура".
#чистая_архитектура #проектирование
Мудрость из книги
Программы формулируются на основе трех парадигм.
Первым широкой публике стало известно структурное программирование. Предлагается отказаться от переходов (
Таким образом, структурное программирование накладывает ограничение на прямую передачу управления.
Конспект книги Роберта Мартина "Чистая архитектура".
#чистая_архитектура #проектирование
Программы формулируются на основе трех парадигм.
Первым широкой публике стало известно структурное программирование. Предлагается отказаться от переходов (
go to
) в пользу условных операторов (if-then-else
) и циклов (do-while-until
).Таким образом, структурное программирование накладывает ограничение на прямую передачу управления.
Конспект книги Роберта Мартина "Чистая архитектура".
#чистая_архитектура #проектирование
Мудрость из книги
Программы формулируются на основе трех парадигм.
Потом пришло ООП.
Сразу несколько разрушение нескольких ошибочных суждений:
+ Это не про связывание данных и функций над ними —
+ Это не про инкапсуляцию — ее можно организовать через заголовочные файлы в C, или через замыкания.
+ Это не про наследование. Можно было и раньше, просто довольно криво. Да и вообще это часто вредное свойство ООП-систем.
+ Это не про полиморфизм. Обеспечить полиморфное поведение можно имея в распоряжении только функции.
На самом деле, ООП дало важный концепт — инверсию зависимостей. А это позволило писать системы основанные на плагинах, которые легко расширять и изменять. Не так давно писал об этом.
Короче, объектно-ориентированное проектирование накладывает ограничение на косвенную передачу управления.
Конспект книги Роберта Мартина "Чистая архитектура".
#чистая_архитектура #проектирование
Программы формулируются на основе трех парадигм.
Потом пришло ООП.
Сразу несколько разрушение нескольких ошибочных суждений:
+ Это не про связывание данных и функций над ними —
cat.walk()
эквивалентно walk(cat)
.+ Это не про инкапсуляцию — ее можно организовать через заголовочные файлы в C, или через замыкания.
+ Это не про наследование. Можно было и раньше, просто довольно криво. Да и вообще это часто вредное свойство ООП-систем.
+ Это не про полиморфизм. Обеспечить полиморфное поведение можно имея в распоряжении только функции.
На самом деле, ООП дало важный концепт — инверсию зависимостей. А это позволило писать системы основанные на плагинах, которые легко расширять и изменять. Не так давно писал об этом.
Короче, объектно-ориентированное проектирование накладывает ограничение на косвенную передачу управления.
Конспект книги Роберта Мартина "Чистая архитектура".
#чистая_архитектура #проектирование