Тема следующего выступления:
Anonymous Poll
45%
Как делать код ревью, улучшать качество кода и проводить рефакторинг?
55%
Для работы нужен опыт, для опыта работа. Что делать?
Сегодня продолжаем изучать тайны ООП. А если вы пропустили предыдущий пост - обязательно читайте.
Мы определили проблему. Задача: "не повторять один и тот же код и сделать код простым". Для решения этой задачи мы воспользуемся Наследованием.
Мы разработали персонажа для игры. Пока всё просто и понятно. У нас есть класс, который выполняет определённые действия.
Мы хотим добавить классы
Warrior и Archer с общей реализацией всего, кроме метода атаки. Стоит вынести общие методы в общий класс. Для этого мы воспользуемся механизмом наследования:Наследование позволяет нам объединить схожие части в один класс.
Мы создали абстрактный класс, который является лишь каркасом. Абстрактный класс не может использоваться самостоятельно. Каждый из классов наследников может использовать как общие методы, так и уникальные методы для каждого из них.
Расширим классы, добавив новый метод специальной атаки. Так как этот метод имеет уникальную реализацию у каждого класса, то реализация должна быть внутри класса наследника. В абстрактном классе мы добавляем абстрактный метод.
Если мы хотим добавить класс
Paladin расширяющий Warrior, то проблем не будет. Мы добавляем уникальный дополнительный метод в новый класс. Paladin сможет использовать как новый метод, так и все методы Warrior.В случае с
TrainingDummy всё сложнее. Те методы, которые этот класс не может использовать мы обязаны переопределить, добавив вызов ошибки, что будет сложно поддерживать!Наследование не просто позволяет нам удобно объединять общее поведение. Любые исключения приведут к большим изменениям. В итоге, каждое изменение приводит к дорогому рефакторингу. Изменения "верхних" классов приводят к изменениям всех "нижних" классов.
Наследование требует объединить общие детали в один класс!
Какие есть альтернативы - знают те, кто был на выступлении. А ты знаешь? Пиши об этом в комментарии!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
У нас есть рабочий код, это важно! Он запускается и всё с ним хорошо. Но в чём же проблемы?
Решить все эти проблемы можно простой командой
isort .Не забудьте установить её 😅
Использование isort - это самый простой способ повысить качество кода, не прикладывая усилий. Помните, что:
Ваш уровень больше всего определяет простой и понятный код!
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня я хочу поделиться выжимкой из своего прошедшего выступления. На нём мы обсудили, как поднять свой грейд и получить оффер с зарплатой в два раза больше текущей.
На выступлении я рассказал:
Читайте полезное по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
Тезис: «Если компания предлагает сделать тестовое задание, то работать в такой компании не стоит».
АРГУМЕНТЫ «ЗА»
АРГУМЕНТЫ «ПРОТИВ»
Пишите свои аргументы «за» и «против» этого тезиса в комментарии!
Please open Telegram to view this post
VIEW IN TELEGRAM
ФРОНТ 🫥 БЕК
На мой взгляд, для работы в разработке сейчас стоит выбирать направление Веб-Бекенда. Но для этого нужно понимать, как работает веб. Разберём на примере.
У нас есть «фронт»:
🟣 Социальная сеть - лента картинок с подписями от других людей.
🟣 Лента со списком людей, на кого ты подписан.
🟣 Лента того, что ты публиковал.
Как это всё должно работать?
Мы используем REST-подход. Вообще есть альтернативы, но о них расскажу потом. REST проще и популярнее.
У нас есть клиент, который делает запросы к серверу. На сервере мы определяем роуты (маршруты, эндпоинты):
🟣 mysite.ru/posts
🟣 mysite.ru/subs
🟣 mysite.ru/my_posts
На фронте (клиенте), при нажатии на "посты", пользователь переходит по первой ссылке mysite.ru/posts. Бек (наш сервер) должен вернуть все данные, чтобы фронт их отрисовал.
В данном примере фронт нас вообще не интересует, поэтому разберём, что мы делаем на беке.
Бизнес приходит к нам с типичными задачами, все они описываются примерно так:
➡️ Запустить сервер, который будет отлавливать обращения с фронта
➡️ Научиться распознавать, какой роут был использован (posts, subs. my_posts)
➡️ На каждое действие возвращать клиенту данные в удобном виде
➡️ При обращении к subs, надо проверить кто текущий пользователь (значит, что нужна система авторизации). Для текущего пользователя сходить в БД и получить всех, на кого он подписан. Вернуть JSON со списком этих пользователей.
Этот пример можно бесконечно расширять, добавляя новую функциональность. Если вы можете справиться с таким (язык и фреймворк не важны, ведь это лишь инструмент), то вы готовы к собесам!👨💻
Пишите в комментарии, если хотите подробный пост про REST, JSON или клиент-серверное взаимодействие. Я как раз закончил записывать урок про это для курса.🔽
На мой взгляд, для работы в разработке сейчас стоит выбирать направление Веб-Бекенда. Но для этого нужно понимать, как работает веб. Разберём на примере.
У нас есть «фронт»:
Как это всё должно работать?
Мы используем REST-подход. Вообще есть альтернативы, но о них расскажу потом. REST проще и популярнее.
У нас есть клиент, который делает запросы к серверу. На сервере мы определяем роуты (маршруты, эндпоинты):
На фронте (клиенте), при нажатии на "посты", пользователь переходит по первой ссылке mysite.ru/posts. Бек (наш сервер) должен вернуть все данные, чтобы фронт их отрисовал.
В данном примере фронт нас вообще не интересует, поэтому разберём, что мы делаем на беке.
Бизнес приходит к нам с типичными задачами, все они описываются примерно так:
Этот пример можно бесконечно расширять, добавляя новую функциональность. Если вы можете справиться с таким (язык и фреймворк не важны, ведь это лишь инструмент), то вы готовы к собесам!
Пишите в комментарии, если хотите подробный пост про REST, JSON или клиент-серверное взаимодействие. Я как раз закончил записывать урок про это для курса.
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы еще не успели по-полной "вкатиться" в рабочий режим, предлагаю решить небольшую задачку.
Что выведет этот простой код на картинке?
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выводит код выше?
Anonymous Quiz
34%
0
14%
10
10%
None
41%
Ничего, произойдёт ошибка / исключение
🤔1
Даже если вы уже читали книгу «Паттерны проектирования», вы можете не справится с одним популярным вопросом собеса. Если вас попросят привести примеры паттернов, вы можете подумать, что никогда не работали с ними.
Это не так! Если вы пишите код на Python, то вы используете паттерны каждый день. Привёл для вас 5 примеров, которые пришли мне на ум первыми.
* Замыкание — функция, которая создаётся каждый раз во время её выполнения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Лучший показатель вашего уровня — это синдром самозванца. Согласно исследованиям Даннига и Крюгера:
Менее компетентные люди имеют более высокое мнение о своих способностях, чем более компетентные.
Схожее рассуждение встречается и у Лао-цзы, Сократа, Конфуция и других философов и учённых:
Зная мало мы считаем, что знаем много, а зная много мы скрываем это.
Исследование 1999 года сформировало эту гипотезу и подтвердило её исследованиями. Скорее всего вы замечаете это и на себе:
В момент получения первого оффера вы будете уверены в своих знаниях больше всего. Не поддавайтесь этому конгитивному искажению! Оно поможет вам пройти собеседования за счёт уверенности, но из-за него вам сложно будет признать свою неправоту. На диаграмме это "Пик глупости".
Устроившись в компанию вы подумаете, что ничего не знаете - сработает синдром самозванца. Именно в этот момент вы в среднем хорошо знаете сферу. Вы понимаете в чём слабы, но не забывайте, что есть то, в чём вы сильны. Зафиксируйте то, что вам кажется непонятным и изучайте. На диаграмме это "Долина отчания".
Почувствовав, что вы понимаете достаточно много, не останавливайтесь в изучении! Попробуйте расширить свои знания в других темах, возможно даже не в программировании. На диаграмме это "Склон просветления".
Согласно исследованию, дальше начинается "Плато стабильности", старайтесь не забывать, что зачастую специалисты развиты только в той сфере которой они заняты. Изучайте новые технологии и инструменты если хотите продолжать развиваться.
Please open Telegram to view this post
VIEW IN TELEGRAM