Чистим код: советы по именованию
Записываем в блокнотик:
— Все сущности должны иметь понятные и удобнопроизносимые имена (т.е. никаких
— Длина названия должна быть пропорциональна области видимости сущности. Вот почему итераторы в маленьких циклах можно называть
— Имена классов должны представлять собой существительные или их комбинации.
— Методы в своём названии должны содержать глагол, описывающий действие метода. Если глагол не подобрать — задумайтесь, точно ли эта сущность должна быть методом?
— Стоит избегать названий со словами
— Если есть группа переменных с общим префиксом, то его ставим в конце, а различные части — вначале:
#чистимкод #теория
Записываем в блокнотик:
— Все сущности должны иметь понятные и удобнопроизносимые имена (т.е. никаких
a1, a2, a3, temp, foo
). Не бойтесь потратить на придумывание названия переменной более 5 секунд. В будущем вы от этого только выиграете. — Длина названия должна быть пропорциональна области видимости сущности. Вот почему итераторы в маленьких циклах можно называть
i
, j
, k
, а какие-то глобальные константы лучше по типу MAX_REQUEST_COUNT
.— Имена классов должны представлять собой существительные или их комбинации.
— Методы в своём названии должны содержать глагол, описывающий действие метода. Если глагол не подобрать — задумайтесь, точно ли эта сущность должна быть методом?
— Стоит избегать названий со словами
And
, With
, т.к. они нарушают принцип единой ответственности (хотя бывают и исключения).— Если есть группа переменных с общим префиксом, то его ставим в конце, а различные части — вначале:
StartButton, StopButton
, а не ButtonStart, ButtonStop
. Так проще находить нужное в группе нескольких переменных.#чистимкод #теория
👍1
Паттерны MVC, MVP и MVVM — что это
Семейство MV*-паттернов — популярная тема у программистов. Про неё любят спрашивать на собеседованиях и указывать в вакансиях. Давайте разберёмся, что это:
MV*-паттерны — паттерны для организации архитектуры кода. Они улучшают его строение, читаемость и обеспечивают эффективную работу приложения. Каждый из них разделяет программную логику на 3 составляющих:
MVC — Model-View-Controller. Тут модель хранит в себе данные, представление отвечает за отображение этих данных, а контроллер реагирует на ввод пользователя, оповещая об этом модель.
MVP — Model-View-Presenter. Тут модель хранит бизнес-логику, представление отображает данные, а презентер реализует взаимодействие между моделью и представлением.
MVVM — Model-View-ViewModel. Модель отвечает за хранение данных и бизнес-логику. Представление — отображает данные и обрабатывает пользовательский ввод. Модель представления преобразует данные из модели для представления и уведомляет модель о вводе.
Подробнее в статье
#теория
Семейство MV*-паттернов — популярная тема у программистов. Про неё любят спрашивать на собеседованиях и указывать в вакансиях. Давайте разберёмся, что это:
MV*-паттерны — паттерны для организации архитектуры кода. Они улучшают его строение, читаемость и обеспечивают эффективную работу приложения. Каждый из них разделяет программную логику на 3 составляющих:
MVC — Model-View-Controller. Тут модель хранит в себе данные, представление отвечает за отображение этих данных, а контроллер реагирует на ввод пользователя, оповещая об этом модель.
MVP — Model-View-Presenter. Тут модель хранит бизнес-логику, представление отображает данные, а презентер реализует взаимодействие между моделью и представлением.
MVVM — Model-View-ViewModel. Модель отвечает за хранение данных и бизнес-логику. Представление — отображает данные и обрабатывает пользовательский ввод. Модель представления преобразует данные из модели для представления и уведомляет модель о вводе.
Подробнее в статье
#теория
Разница между переменными значимого и ссылочного типа
Понимание различий между переменной значения (value variable) и ссылочной переменной (ref variable) считается фундаментальными знаниями практически в любом стеке. Также эта тема может подниматься на собеседованиях на позицию junior-разработчика. И вот в чем разница:
Когда мы оперируем переменной значимого типа (присваиваем, передаём аргументом в функцию, кешируем и т. д.), то мы оперируем непосредственным значением переменной (например, числом или буленом). То есть когда переменной А присваивается значение переменной Б, то переменной А назначается копия Б, которая никак не зависит от оригинала. Если же потом переменная Б изменяется, это никак не отражается на значении переменной А. Пример из жизни: подруга попросила у вас книгу, вы отдаёте ей ксерокопию книги. Если потом подруга решит разрисовать свою копию, на вашем оригинале книги это никак не отразится.
Когда мы оперируем переменными ссылочного типа, то мы оперируем лишь указателем на переменную, а не его непосредственным значением. Если переменной А присваивается Б, то в А никакого значения не хранится, а хранится лишь ссылка на Б. В таком случае, если меняется значение Б, то и значение А тоже изменяется. Пример: подруга попросила у вас книгу и вы даёте ей номер нужной книги в библиотеке — она может пользоваться оригиналом. Если она решит разрисовать книгу — она разрисует оригинал.
Это далеко не единственное отличие между этими типами, но крайне важное.
#теория
Понимание различий между переменной значения (value variable) и ссылочной переменной (ref variable) считается фундаментальными знаниями практически в любом стеке. Также эта тема может подниматься на собеседованиях на позицию junior-разработчика. И вот в чем разница:
Когда мы оперируем переменной значимого типа (присваиваем, передаём аргументом в функцию, кешируем и т. д.), то мы оперируем непосредственным значением переменной (например, числом или буленом). То есть когда переменной А присваивается значение переменной Б, то переменной А назначается копия Б, которая никак не зависит от оригинала. Если же потом переменная Б изменяется, это никак не отражается на значении переменной А. Пример из жизни: подруга попросила у вас книгу, вы отдаёте ей ксерокопию книги. Если потом подруга решит разрисовать свою копию, на вашем оригинале книги это никак не отразится.
Когда мы оперируем переменными ссылочного типа, то мы оперируем лишь указателем на переменную, а не его непосредственным значением. Если переменной А присваивается Б, то в А никакого значения не хранится, а хранится лишь ссылка на Б. В таком случае, если меняется значение Б, то и значение А тоже изменяется. Пример: подруга попросила у вас книгу и вы даёте ей номер нужной книги в библиотеке — она может пользоваться оригиналом. Если она решит разрисовать книгу — она разрисует оригинал.
Это далеко не единственное отличие между этими типами, но крайне важное.
#теория
Статическая и динамическая типизация — кто эти двое и в чём ключевая разница?
Статическая и динамическая типизация — это два основных подхода к обработке типов данных в программировании.
В статической типизации тип данных переменной определяется на этапе написания кода и остаётся неизменным во время выполнения программы.
В динамической типизации тип переменной определяется во время выполнения программы, что позволяет ей изменяться в зависимости от присвоенных значений.
Статическая типизация обычно обеспечивает большую надёжность, так как позволяет обнаруживать ошибки на этапе компиляции, в то время как динамическая типизация обеспечивает большую гибкость в разработке. Некоторые языки программирования поддерживают один из типов типизации, другие же — оба типа.
@programmer_ways #теория
Статическая и динамическая типизация — это два основных подхода к обработке типов данных в программировании.
В статической типизации тип данных переменной определяется на этапе написания кода и остаётся неизменным во время выполнения программы.
В динамической типизации тип переменной определяется во время выполнения программы, что позволяет ей изменяться в зависимости от присвоенных значений.
Статическая типизация обычно обеспечивает большую надёжность, так как позволяет обнаруживать ошибки на этапе компиляции, в то время как динамическая типизация обеспечивает большую гибкость в разработке. Некоторые языки программирования поддерживают один из типов типизации, другие же — оба типа.
@programmer_ways #теория
👍1
Основы API
API (Application Programming Interface) — это набор инструкций, которые позволяют программам взаимодействовать друг с другом. Например, если вы разрабатываете мобильное приложение для прогноза погоды, оно может использовать API, чтобы получить данные о погоде с сервера и отобразить их на устройстве. Таким образом, API действует как посредник, обеспечивая связь и обмен информацией между различными приложениями и сервисами.
Держите статью, в которой подробнее рассказывается об API и приводятся примеры его применения.
@ПутьПрограммиста #теория #api
API (Application Programming Interface) — это набор инструкций, которые позволяют программам взаимодействовать друг с другом. Например, если вы разрабатываете мобильное приложение для прогноза погоды, оно может использовать API, чтобы получить данные о погоде с сервера и отобразить их на устройстве. Таким образом, API действует как посредник, обеспечивая связь и обмен информацией между различными приложениями и сервисами.
Держите статью, в которой подробнее рассказывается об API и приводятся примеры его применения.
@ПутьПрограммиста #теория #api
Как работает прокси-сервер: максимально простое объяснение
Про прокси или прокси-сервера можно услышать где угодно, но что это? Прокси — это посредник между устройством пользователя и интернетом, который позволяет скрывать реальный IP-адрес. Он используется для обхода блокировок сайтов, анонимного серфинга или улучшения скорости загрузки через кэширование.
Ловите короткое видео, где простым языком отвечают на следующие вопросы:
— Что такое прокси-сервер?
— Зачем нужен прокси-сервер?
— Какие бывают прокси-сервера?
— Разница между прокси и VPN?
— Когда выбрать VPN, а когда прокси?
— Плюсы и минусы прокси-сервера.
@ПутьПрограммиста #теория #vpn #прокси
Про прокси или прокси-сервера можно услышать где угодно, но что это? Прокси — это посредник между устройством пользователя и интернетом, который позволяет скрывать реальный IP-адрес. Он используется для обхода блокировок сайтов, анонимного серфинга или улучшения скорости загрузки через кэширование.
Ловите короткое видео, где простым языком отвечают на следующие вопросы:
— Что такое прокси-сервер?
— Зачем нужен прокси-сервер?
— Какие бывают прокси-сервера?
— Разница между прокси и VPN?
— Когда выбрать VPN, а когда прокси?
— Плюсы и минусы прокси-сервера.
@ПутьПрограммиста #теория #vpn #прокси
YouTube
Что такое прокси-сервер за 7 минут
В статье мы узнаем:
- Что такое прокси-сервер
- Зачем нужен прокси-сервер
- Какие бывают прокси-сервера
- Разница между прокси и VPN
- Когда выбрать VPN, а когда прокси
- Плюсы и минусы прокси-сервера
Список сервисов, где можно найти подходящие прокси:
…
- Что такое прокси-сервер
- Зачем нужен прокси-сервер
- Какие бывают прокси-сервера
- Разница между прокси и VPN
- Когда выбрать VPN, а когда прокси
- Плюсы и минусы прокси-сервера
Список сервисов, где можно найти подходящие прокси:
…
Что такое библиотека, фреймворк и чем они отличаются?
И библиотека, и фреймворк дают возможность разработчикам использовать готовые решения, плагины или другие модули, что значительно экономит время на разработку и отладку.
Всё ещё думаете, что основное отличие библиотеки от фреймворка в том, что первое просто меньше по функциональности, чем второе? Это не совсем корректно. Библиотека оставляет за разработчиком возможность выбора организации и структуры проекта, в то время как фреймворк берёт эту ответственность на себя, поэтому разработчик подстраивается под структуру фреймворка.
В видео автор простыми словами и на пальцах даёт определения этим двум понятиям, так что разобраться сможет даже самый начинающий.
@ПутьПрограммиста #теория
И библиотека, и фреймворк дают возможность разработчикам использовать готовые решения, плагины или другие модули, что значительно экономит время на разработку и отладку.
Всё ещё думаете, что основное отличие библиотеки от фреймворка в том, что первое просто меньше по функциональности, чем второе? Это не совсем корректно. Библиотека оставляет за разработчиком возможность выбора организации и структуры проекта, в то время как фреймворк берёт эту ответственность на себя, поэтому разработчик подстраивается под структуру фреймворка.
В видео автор простыми словами и на пальцах даёт определения этим двум понятиям, так что разобраться сможет даже самый начинающий.
@ПутьПрограммиста #теория
YouTube
Что такое framework и library / Объясняю на пальцах для новичков и не только
Из сегодняшнего выпуска вы узнаете, что такое фреймворк (framework) и как его отличить от библиотеки (library). Я объясню это простыми словами на примере постройки здания. Будет весело, интересно и понятно всем - от новичков до экспертов!
Так что, делайте…
Так что, делайте…
Возможности языка Python
Так как мне часто стали задавать вопросы о том, чем может быть полезен Python, я решил написать небольшую обзорную статью на эту тему.
Вот лишь некоторые вещи, которые умеет делать python:
• Работа с xml/html файлами
• Работа с http запросами
• GUI (графический интерфейс)
• Создание веб-сценариев
• Работа с FTP
• Работа с изображениями, аудио и видео файлами
• Робототехника
• Программирование математических и научных вычислений
И многое, многое другое...
Таким образом, python подходит для решения львиной доли повседневных задач, будь то резервное копирование, чтение электронной почты, либо же какая-нибудь игрушка. Язык программирования Python практически ничем не ограничен, поэтому также может использоваться в крупных проектах. К примеру, python интенсивно применяется IT-гигантами, такими как, например, Google и Yandex. К тому же простота и универсальность python делают его одним из лучших языков программирования.
#теория #основы
Так как мне часто стали задавать вопросы о том, чем может быть полезен Python, я решил написать небольшую обзорную статью на эту тему.
Вот лишь некоторые вещи, которые умеет делать python:
• Работа с xml/html файлами
• Работа с http запросами
• GUI (графический интерфейс)
• Создание веб-сценариев
• Работа с FTP
• Работа с изображениями, аудио и видео файлами
• Робототехника
• Программирование математических и научных вычислений
И многое, многое другое...
Таким образом, python подходит для решения львиной доли повседневных задач, будь то резервное копирование, чтение электронной почты, либо же какая-нибудь игрушка. Язык программирования Python практически ничем не ограничен, поэтому также может использоваться в крупных проектах. К примеру, python интенсивно применяется IT-гигантами, такими как, например, Google и Yandex. К тому же простота и универсальность python делают его одним из лучших языков программирования.
#теория #основы
Переменные и типы данных в Python
Переменные являются важной частью любого языка программирования. В ходе урока мы научимся создавать переменные и выполнять различные действия над ними. Помимо этого мы изучим типы данных что существуют в языке Python.
Переменные невероятно важны, так как позволяют хранить информацию и использовать её в дальнейшем.
Типы переменных в языке Python не объявляются очевидно, тем не менее они присутствуют. Интерпретатор понимает что записывается в переменную и на основании этого добавляет тип к этой переменной.
Всего в Python есть 4 базовых типа переменных:
● Integer: some = 1 - целые числа;
● Float: some = 1.12 - числа с плавающей точкой;
● String: some = "Привет" - строки;
● Boolean: some = True - тип данных принимающий либо False, либо True.
Есть и другие типы, но мы будем их разбирать в последующих уроках.
Во время выполнения программы есть возможность перезаписывать переменные, а также менять их тип. Если вначале переменна была с типом float, то потом её можно преобразовать в другой тип, к примеру, в string.
При объединение нескольких переменных с разными типами данных программа спровоцирует ошибку.
Пример:
В одной строке можно создать сразу несколько переменных:
Переменные и работа с ними:
@ПутьПрограммиста #теория #основы #переменные #типыданных
Переменные являются важной частью любого языка программирования. В ходе урока мы научимся создавать переменные и выполнять различные действия над ними. Помимо этого мы изучим типы данных что существуют в языке Python.
Переменные невероятно важны, так как позволяют хранить информацию и использовать её в дальнейшем.
Типы переменных в языке Python не объявляются очевидно, тем не менее они присутствуют. Интерпретатор понимает что записывается в переменную и на основании этого добавляет тип к этой переменной.
Всего в Python есть 4 базовых типа переменных:
● Integer: some = 1 - целые числа;
● Float: some = 1.12 - числа с плавающей точкой;
● String: some = "Привет" - строки;
● Boolean: some = True - тип данных принимающий либо False, либо True.
Есть и другие типы, но мы будем их разбирать в последующих уроках.
Во время выполнения программы есть возможность перезаписывать переменные, а также менять их тип. Если вначале переменна была с типом float, то потом её можно преобразовать в другой тип, к примеру, в string.
first_num = 23.2 # Тип данных float
first_num = "1" # Тип данных string
При объединение нескольких переменных с разными типами данных программа спровоцирует ошибку.
Пример:
first_num = "IloveYou"
second_num = 13
res = first_num + second_num # Скрипт выдаст ошибку
В одной строке можно создать сразу несколько переменных:
first = sec = third = 1 # Всем трём переменным будет присвоено значение 1
first, sec, third = "Hi", 75, 23.1 # Поочередное присвоение значений
Переменные и работа с ними:
number = 5 # int
digit = -4.54356876 # float
word = "Результат:" # string
boolean = True # bool
str_num = '5' # string
print(word + str(digit))
print(word + str(number + int(str_num)))
del number
number = 7
print("Результат:", number)
@ПутьПрограммиста #теория #основы #переменные #типыданных
Подборка алгоритмов, которые правят миром
Существует очень много алгоритмов, но какие из них используются в реальной жизни? Вот список конкретных из них, которые используются повсеместно и на которые вам точно стоит обратить внимание:
— Алгоритмы сортировки;
— Преобразование Фурье;
— Алгоритм Дейкстры;
— Алгоритм RSA;
— Алгоритм безопасного хеширования;
— Алгоритм факторизации чисел;
— Анализ связей;
— Пропорционально-интегрально-дифференцирующий алгоритм
— Алгоритм сжатия данных;
— Алгоритм генерации случайных чисел;
В этой статье рассказывается о практической значимости алгоритмов с примерами их применения в повседневной жизни. Так что сохраняйте такой маст хэв.
#алгоритмы #теория
Существует очень много алгоритмов, но какие из них используются в реальной жизни? Вот список конкретных из них, которые используются повсеместно и на которые вам точно стоит обратить внимание:
— Алгоритмы сортировки;
— Преобразование Фурье;
— Алгоритм Дейкстры;
— Алгоритм RSA;
— Алгоритм безопасного хеширования;
— Алгоритм факторизации чисел;
— Анализ связей;
— Пропорционально-интегрально-дифференцирующий алгоритм
— Алгоритм сжатия данных;
— Алгоритм генерации случайных чисел;
В этой статье рассказывается о практической значимости алгоритмов с примерами их применения в повседневной жизни. Так что сохраняйте такой маст хэв.
#алгоритмы #теория
Python: Числа с плавающей точкой
В математике существуют разные виды чисел, например, натуральные - это целые числа от одного и больше, или рациональные - это числа с точкой, например 0.5. С точки зрения устройства компьютеров, между этими видами чисел пропасть. Попробуйте ответить на простой вопрос, сколько будет 0.2 + 0.1? А теперь посмотрим, что на это скажет Python:
Операция сложения двух рациональных чисел внезапно привела к неточному вычислению результата. Тот же самый результат выдадут и другие языки программирования. Такое поведение обуславливается ограничениями вычислительных мощностей. Объём памяти, в отличие от чисел, конечен (бесконечное количество чисел требует бесконечного количества памяти для своего хранения).
Рациональные числа не выстроены в непрерывную цепочку, между 0.1 и 0.2 бесконечное множество чисел. Соответственно возникает серьезная проблема, а как хранить рациональные числа? Это интересный вопрос сам по себе.
Число с плавающей запятой состоит из набора отдельных разрядов, условно разделенных на знак, порядок и мантиссу. Порядок и мантисса — целые числа, которые вместе со знаком дают представление числа с плавающей запятой в следующем виде:
Мантисса – это целое число фиксированной длины, которое представляет старшие разряды действительного числа.
Порядок – это степень базы (двойки) старшего разряда. (Математически доказано, что числа с плавающей запятой с базой B=2 (двоичное представление) наиболее устойчивы к ошибкам округления, поэтому на практике встречаются только базы 2 и, реже, 10.)
Для нас, как для разработчиков, важно понимать, что операции с плавающими числами неточны (эту точность можно регулировать)
#теория #типыданных #основы
В математике существуют разные виды чисел, например, натуральные - это целые числа от одного и больше, или рациональные - это числа с точкой, например 0.5. С точки зрения устройства компьютеров, между этими видами чисел пропасть. Попробуйте ответить на простой вопрос, сколько будет 0.2 + 0.1? А теперь посмотрим, что на это скажет Python:
print(0.2 + 0.1) # => 0.30000000000000004
Операция сложения двух рациональных чисел внезапно привела к неточному вычислению результата. Тот же самый результат выдадут и другие языки программирования. Такое поведение обуславливается ограничениями вычислительных мощностей. Объём памяти, в отличие от чисел, конечен (бесконечное количество чисел требует бесконечного количества памяти для своего хранения).
Рациональные числа не выстроены в непрерывную цепочку, между 0.1 и 0.2 бесконечное множество чисел. Соответственно возникает серьезная проблема, а как хранить рациональные числа? Это интересный вопрос сам по себе.
Число с плавающей запятой состоит из набора отдельных разрядов, условно разделенных на знак, порядок и мантиссу. Порядок и мантисса — целые числа, которые вместе со знаком дают представление числа с плавающей запятой в следующем виде:
(-1)**s × M × B**E
где s — знак, B-основание, E — порядок, а M — мантисса, ** - возведение в степень
Мантисса – это целое число фиксированной длины, которое представляет старшие разряды действительного числа.
Порядок – это степень базы (двойки) старшего разряда. (Математически доказано, что числа с плавающей запятой с базой B=2 (двоичное представление) наиболее устойчивы к ошибкам округления, поэтому на практике встречаются только базы 2 и, реже, 10.)
Для нас, как для разработчиков, важно понимать, что операции с плавающими числами неточны (эту точность можно регулировать)
#теория #типыданных #основы