ООП на простых примерах
В 40-минутном видео аккуратно объясняют три кита объектно-ориентированного программирования. Примеры даны на TypeScript, но понятны любому разработчику. Автор аккуратно иллюстрирует необходимость ООП, рассказывает про инкапсуляцию, наследование и полиморфизм. Покрыты даже относительно сложные вещи вроде параметрического и ad-hoc полиморфизма.
На трёх китах ООП автор не заканчивает. Вторая половина ролика повествует о композиции и агрегации на примере автомобиля с двигателем и колёсами, об абстрактных классах и интерфейсах, и даже немного о дженериках. Завершает изложение реализация паттернов Dependency Injection и Singleton. При этом Singleton во многих случаях является антипаттерном и мы не рекомендуем его применять.
Обратите внимание, как автор умело использует IDE для автогенерации сеттеров и геттеров. Не забывайте, что IDE — ваш добрый друг, который много чего умеет.
Про нюансы getattr и setattr в питоне мы делали отдельные посты.
#sudo #youtube #procode
В 40-минутном видео аккуратно объясняют три кита объектно-ориентированного программирования. Примеры даны на TypeScript, но понятны любому разработчику. Автор аккуратно иллюстрирует необходимость ООП, рассказывает про инкапсуляцию, наследование и полиморфизм. Покрыты даже относительно сложные вещи вроде параметрического и ad-hoc полиморфизма.
На трёх китах ООП автор не заканчивает. Вторая половина ролика повествует о композиции и агрегации на примере автомобиля с двигателем и колёсами, об абстрактных классах и интерфейсах, и даже немного о дженериках. Завершает изложение реализация паттернов Dependency Injection и Singleton. При этом Singleton во многих случаях является антипаттерном и мы не рекомендуем его применять.
Обратите внимание, как автор умело использует IDE для автогенерации сеттеров и геттеров. Не забывайте, что IDE — ваш добрый друг, который много чего умеет.
Про нюансы getattr и setattr в питоне мы делали отдельные посты.
#sudo #youtube #procode
YouTube
ООП на простых примерах. Объектно-ориентированное программирование
ООП простым языком. Основные концепции объектно ориентированного программирования. Объекты, классы, инкапсуляция, полиморфизм, наследование, композиция, агрегация, интерфейсы, паттерны, solid, dependency injection.
Мой курс "Продвинутый Frontend. В production…
Мой курс "Продвинутый Frontend. В production…
👍10🔥3❤2⚡1🌭1
Делай нейминг как сеньор
Все мы знаем, что нужно правильно и понятно именовать переменные. Правильно, понятно – а это как?
Ребята написали отличную статью, где комплексно, с разных сторон подошли к вопросу нейминга.
На самом деле проработанный, качественный нейминг очень важен. Один раз где-то, что-то плохо назовешь, а через месяц-другой эти наименования просочатся в документацию, аналитику, тесты, внешние api.
Неправильно именование приводит к неправильному пониманию, а дальше – к некорректному использованию.
Чтобы детальнее разобраться, автор выделяет несколько распространенных проблем: слишком общие название, избыточные названия, названия без контекста, названия с некорректным переводом или калькой со своего языка, абстрактные названия. Каждая из проблем сопровождается примерами.
К решению проблемы автор также подходит комплексно, отталкиваясь от понимания предметной области и того, как выстроить работу с неймингом на уровне команды и продукта.
Заканчивается статья набором конкретных практических советов, которые можно брать и применять.
#procode
Все мы знаем, что нужно правильно и понятно именовать переменные. Правильно, понятно – а это как?
Ребята написали отличную статью, где комплексно, с разных сторон подошли к вопросу нейминга.
На самом деле проработанный, качественный нейминг очень важен. Один раз где-то, что-то плохо назовешь, а через месяц-другой эти наименования просочатся в документацию, аналитику, тесты, внешние api.
Неправильно именование приводит к неправильному пониманию, а дальше – к некорректному использованию.
Чтобы детальнее разобраться, автор выделяет несколько распространенных проблем: слишком общие название, избыточные названия, названия без контекста, названия с некорректным переводом или калькой со своего языка, абстрактные названия. Каждая из проблем сопровождается примерами.
К решению проблемы автор также подходит комплексно, отталкиваясь от понимания предметной области и того, как выстроить работу с неймингом на уровне команды и продукта.
Заканчивается статья набором конкретных практических советов, которые можно брать и применять.
#procode
Хабр
Делай нейминг как сеньор
В чём разница между сочинением третьеклассника и статьёй в крупном таблоиде? Любой из нас сходу определит, что есть что. Даже если оба текста описывают одно и то же событие. А чем отличается код...
👍8🌭6❤2
Вариантность типов
Интересная тема из теории программирования. В языках программирования существуют типы данных, и они могут образовывать сложную иерархию.
Простой пример: тип Natural является подтипом Integer и Positive. И все трое одновременно являются подтипами Real. А тип Prime является подтипом всех вышеперечисленных.
Есть у нас функция, которая в качестве параметра принимает на вход определённый тип данных. А можем ли мы передать в качестве параметра подтип или надтип исходного типа данных? За это как раз отвечает вариантность типов.
Контравариантность, ковариантность, инвариантность — в статье все эти замечательные термины рассматриваются на конкретных понятных примерах.
Также прочтение статьи позволит более глубокого понять принцип подстановки Барбары Лисков (LSP), который фигурирует в известной аббревиатуре soLid.
В конце рассматривается реализация вариантности в различных языках программирования –TypeScript, C#, Java, C++.
А на тему вариантности в python у Диджи было замечательное видео.
#procode
Интересная тема из теории программирования. В языках программирования существуют типы данных, и они могут образовывать сложную иерархию.
Простой пример: тип Natural является подтипом Integer и Positive. И все трое одновременно являются подтипами Real. А тип Prime является подтипом всех вышеперечисленных.
Есть у нас функция, которая в качестве параметра принимает на вход определённый тип данных. А можем ли мы передать в качестве параметра подтип или надтип исходного типа данных? За это как раз отвечает вариантность типов.
Контравариантность, ковариантность, инвариантность — в статье все эти замечательные термины рассматриваются на конкретных понятных примерах.
Также прочтение статьи позволит более глубокого понять принцип подстановки Барбары Лисков (LSP), который фигурирует в известной аббревиатуре soLid.
В конце рассматривается реализация вариантности в различных языках программирования –TypeScript, C#, Java, C++.
А на тему вариантности в python у Диджи было замечательное видео.
#procode
🔥7👍5⚡2❤1🌭1
Приоритизация технического долга
Технический долг штука хитрая, сначала незаметная. Но в какой-то момент начинает влиять на производительность системы и эффективность разработки.
И вроде всё просто — бери и исправляй. Но когда система разрастается, а бизнес требует новый функционал, появляются вопросики. За что хвататься? Всё явно не успеем, но забивать нельзя, потихоньку нужно закрывать долги.
В статье автор размышляет о приоритизации технического долга. На практике сводится к тому, что нужно ответить на два вопроса:
— Если мы ничего не будем предпринимать, усугубится ли проблема, или всё в целом останется на прежнем уровне, или вообще всё будет двигаться в сторону улучшения?
— Проблема относится к той части системы, которая активно развивается и используется или находится просто на обслуживании?
Ответив по каждой проблеме на эти вопросы, можно более осознанно приоритизировать свой технический долг.
#procode
Технический долг штука хитрая, сначала незаметная. Но в какой-то момент начинает влиять на производительность системы и эффективность разработки.
И вроде всё просто — бери и исправляй. Но когда система разрастается, а бизнес требует новый функционал, появляются вопросики. За что хвататься? Всё явно не успеем, но забивать нельзя, потихоньку нужно закрывать долги.
В статье автор размышляет о приоритизации технического долга. На практике сводится к тому, что нужно ответить на два вопроса:
— Если мы ничего не будем предпринимать, усугубится ли проблема, или всё в целом останется на прежнем уровне, или вообще всё будет двигаться в сторону улучшения?
— Проблема относится к той части системы, которая активно развивается и используется или находится просто на обслуживании?
Ответив по каждой проблеме на эти вопросы, можно более осознанно приоритизировать свой технический долг.
#procode
👍8❤3🔥1😁1🌭1
Асинхронное взаимодействие сервисов с применением Kafka
Практическая статья, демонстрирующая, как организовать асинхронное взаимодействие сервисов на Python с использованием Kafka. Автор коротенько даёт вводные, описывает архитектуру и переходит к делу.
У нас были посты для более глубокого погружения в Kafka. Например, тут в одной статье рассказывают самые основы, в другой разбирают неочевидные проблемы, возникающие на практике.
#python #procode
Практическая статья, демонстрирующая, как организовать асинхронное взаимодействие сервисов на Python с использованием Kafka. Автор коротенько даёт вводные, описывает архитектуру и переходит к делу.
У нас были посты для более глубокого погружения в Kafka. Например, тут в одной статье рассказывают самые основы, в другой разбирают неочевидные проблемы, возникающие на практике.
#python #procode
Medium
Event-Driven Apps Using Kafka and Python
In this blog post, we will design and implement an event-driven application using Kafka in Python. In this post, we take an example of…
❤3👍3🔥2