ar
Feedback
Академия Кода

Академия Кода

الذهاب إلى القناة على Telegram

Академия кода. Полезный контент по программированию. По всем вопросам @evgenycarter

إظهار المزيد
1 949
المشتركون
لا توجد بيانات24 ساعات
-97 أيام
-2830 أيام
أرشيف المشاركات
Принципы программирования. Хороший разработчик пишет качественный код. Сейчас существуют главные правила написания хорошего кода, им даже придуманы аббревиатуры. Их сейчас и разберем. KISS Keep It Stupid Simple - придерживайся простоты. Хороший пример этому - побитовые операции и регулярки. Это не означает, что их нельзя использовать. Но не надо использовать их там, где это не нужно. Чем проще написан код, тем легче его поддерживать вам и вашим коллегам. DRY Don’t Repeat Yourself - не повторяйся. Не следует дублировать код. Вместо копирования нужно создать функцию. В будущем это упростит отладку и изменение кода. Особенно в больших программах. YAGNI You Aren’t Gonna Need It - тебе это не понадобится. Неправильно создавать места только для будущего расширения кода. Неизвестно точно, какой именно понадобится функционал и возможно код будет мешать новому (речь не идет о заглушках на заказанный функционал). SLAP Single Level of Abstraction Principle - принцип единого уровня абстракций. Код должен оставаться поддерживаемым, особенно функции. Если функция не помещается на экран, то ее следует разбить на несколько других функций. «Функции должны выполнять только одно действие, но выполнять его хорошо» (Роберт Мартин). В частности напоминает принцип DRY, но сильно отличается, код не обязательно должен повторяться. Но должен быть разбит на логические блоки, для большего удобства #python Подписывайтесь на канал 👉@cod_academy

Что такое mutable? Mutable называются объекты, чьи состояния и переменные можно изменить после создания. Например такие класс
Что такое mutable? Mutable называются объекты, чьи состояния и переменные можно изменить после создания. Например такие классы, как StringBuilder, StringBuffer. #java Подписывайтесь на канал 👉@cod_academy

Алгоритм distance Возвращает расстояние до желаемой позиции от первого итератора. Эта функция очень полезна при поиске нужног
Алгоритм distance Возвращает расстояние до желаемой позиции от первого итератора. Эта функция очень полезна при поиске нужного нам индекса. #cpp Подписывайтесь на канал 👉@cod_academy

Как вывести все методы класса в Python? Для того, чтобы вывести все методы класса, Вы можете воспользоваться методами dir(),
Как вывести все методы класса в Python? Для того, чтобы вывести все методы класса, Вы можете воспользоваться методами dir(), callable(), getattr() #python Подписывайтесь на канал 👉@cod_academy

FileOutputStream vs. FileWriter Запись файлов на Java осуществляется двумя способами: FileOutputStream и FileWriter. Какой им
FileOutputStream vs. FileWriter Запись файлов на Java осуществляется двумя способами: FileOutputStream и FileWriter. Какой именно метод выбрать, зависит от конкретной задачи. FileOutputStream предназначен для записи потоков необработанных байтов. Это делает его идеальным решением для работы, например, с изображениями. У FileWriter другое призвание: работа с потоками символов. Так что если вы пишете текстовые файлы, выбирайте этот метод. #java Подписывайтесь на канал 👉@cod_academy

Как вызвать функцию C в программе на C++? Еще один популярный вопрос с собеседований, рассчитанный на новичков, совершенно не
Как вызвать функцию C в программе на C++? Еще один популярный вопрос с собеседований, рассчитанный на новичков, совершенно не представляющих, как такое возможно. На самом же деле возможно, если использовать extern «C». #cpp Подписывайтесь на канал 👉@cod_academy

Функции высшего порядка Функции высшего порядка - функции принимающие или возвращающие другие функции. Очень говорящее назван
Функции высшего порядка Функции высшего порядка - функции принимающие или возвращающие другие функции. Очень говорящее название, запомнить очень просто Чуть ранее мы говорили про lambda, они очень хорошо взаимодействуют с высшими функциями. Про одну из них мы говорили - map(). Она может принимать в себя лямбду, но это не дает такой большой функциональности. Еще одна функция-итератор - filter() Она поможет отфильтровать списки или итераторы. Первым принимает функцию, если она возвращает True, то пропускает элемент, вторым аргументом принимает список или итератор. Не забывайте комбинировать функции! #python Подписывайтесь на канал 👉@cod_academy

Выполнится ли блок finally, если блок try или catch выполняют инструкцию return? Да, блок finally выполнится, даже если return выполнился в блоке try или catch. Это один из самых популярных и сложных вопросов по Java. Запомните: единственный способ остановить выполнение блока finally — использовать System.exit(). #java Подписывайтесь на канал 👉@cod_academy

Вызов функции через кортеж Креативное применение шаблонов, которое позволяет вызвать любую функцию, передав в неё параметры в
Вызов функции через кортеж Креативное применение шаблонов, которое позволяет вызвать любую функцию, передав в неё параметры в виде кортежа. #cpp Подписывайтесь на канал 👉@cod_academy

Конструктор класса У классов практически во всех языках есть конструкторы — это такие специальные методы, которые вызываются
Конструктор класса У классов практически во всех языках есть конструкторы — это такие специальные методы, которые вызываются автоматически и инициализируют экземпляр класса. В Python конструкторы в классах имеют название __init__(), и их почти всегда переопределяют. Делается это для того, чтобы назначить свойства объекту и выполнить предварительные действия. #python Подписывайтесь на канал 👉@cod_academy

Можно ли предопределить или перегрузить статический метод в Java? Перегрузить статический метод в Java можно, но вот предопределить его нельзя. Вы можете написать другой статистический метод с такой же сигнатурой в подклассе, но он не будет предопределять суперкласс. в Java это называется сокрытием методов. #java Подписывайтесь на канал 👉@cod_academy

Избавляемся от макросов В целом, разработчики стандарта стараются исключить препроцессор. Как следствие, в новой версии можно
Избавляемся от макросов В целом, разработчики стандарта стараются исключить препроцессор. Как следствие, в новой версии можно не пользоваться макросами FILE и LINE, а взамен использовать std::source_location(см картинку). Как мы видим, код становится более единообразным, в одном стиле, с расширяемым функционалом. #cpp Подписывайтесь на канал 👉@cod_academy

Анонимные функции Часто функции нужны только один раз, причем короткие. И избыточно создавать под них функцию и придумывать е
Анонимные функции Часто функции нужны только один раз, причем короткие. И избыточно создавать под них функцию и придумывать ей имя. Для таких случаев существуют лямбда функции, так выглядит их создание: <аргументы>: <выражение> Такие функции обязан знать каждый программист, их применение сильно сокращает код. #python Подписывайтесь на канал 👉@cod_academy

Что выведет эта программа? Ответ: Программа напечатает “String method”. Прежде всего стоит отметить, что null не является объ
Что выведет эта программа? Ответ: Программа напечатает “String method”. Прежде всего стоит отметить, что null не является объектом в Java. Но null можно присвоить любой ссылке. Java String является объектом класса java.lang.String. В этой программе компилятор Java выбирает вызов перегруженного метода с наиболее конкретными параметрами. Это будет String, потому что класс String более конкретен, чем класс Object. #java Подписывайтесь на канал 👉@cod_academy

Проверка возможности конструирования элемента с набором конкретных параметров Когда шаблонный класс задан в виде template, бы
Проверка возможности конструирования элемента с набором конкретных параметров Когда шаблонный класс задан в виде template<class T, typename... Args>, бывает трудно понять, какие аргументы можно использовать. Метод is_constructible из библиотеки type_traits даёт неполный ответ: он показывает, существует ли конструктор под конкретные аргументы. Для более полной картины можно использовать еще один шаблон. #cpp Подписывайтесь на канал 👉@cod_academy

Бесконечные списки Мы уже рассказывали про важность копирования списков. Но именно из-за такой процедуры появляется возможнос
Бесконечные списки Мы уже рассказывали про важность копирования списков. Но именно из-за такой процедуры появляется возможность создавать бесконечные списки. Дойти до конца такого списка невозможно, при этом он потребляет минимум памяти. Попробуйте создать сами. На картинке (см. выше) видно создание. А затем мы пробуем модуль copy, чтобы узнать сможет ли он сделать глубокое копирование бесконечного объекта? Применить знание особо негде, но данное задание помогает понять работу списков. Возможно, такой вопрос задаст вам рекрутер на одном из собеседований. #python Подписывайтесь на канал 👉@cod_academy

Ключевое слово abstract в Java abstract - это модификатор, применимый для классов, методов, но не для переменных. Он использу
Ключевое слово abstract в Java abstract - это модификатор, применимый для классов, методов, но не для переменных. Он используется для достижения абстракции, которая является одним из столпов объектно-ориентированного программирования. Рассмотрим варианты применения abstract: 1. Класс, имеющий частичную реализацию (т.е. не все методы, присутствующие в классе, определены). 2. Иногда требуется объявление нереализованного метода в суперклассе. Этого можно добиться, указав модификатор abstract. #java Подписывайтесь на канал 👉@cod_academy

malloc стал безопасен В предыдущих версиях использование низкоуровневых функций, унаследованных из языка Си, не рекомендовало
malloc стал безопасен В предыдущих версиях использование низкоуровневых функций, унаследованных из языка Си, не рекомендовалось. Проблема в том, что Си оперирует байтами, а в С++ происходит работа с объектами со своим временем жизни и областью видимости. До С++ 20 время жизни объекта начиналось после вызова оператора new. В новой версии все изменилось — принято считать, что набор низкоуровневых функций — memcpy, memmove, malloc, aligned_alloc, calloc, realloc, bit_cast, начинает время жизни объекта. Т. е. следующий код(см картинку) будет валиден. Т. е. у нас появляется обратная совместимость с языком Си, но относительно С++ в новой трактовке. #cpp Подписывайтесь на канал 👉@cod_academy

Оформление кода Все вы знаете, что в python есть своя философия. Именно отсюда берутся определенные правила и стандарты. В па
Оформление кода Все вы знаете, что в python есть своя философия. Именно отсюда берутся определенные правила и стандарты. В пайтон такое соглашение назвали PEP 8 (читается - пэп). Соответствие пепу позволяет видеть основную структуру вашего кода другим разработчикам. Не нужно привыкать к другому оформлению кода. Если вы привыкли как-то оформлять код, а увидели что-то совершенно другое, то вы поймете. #python Подписывайтесь на канал 👉@cod_academy

Сколько объектов типа String создает эта программа? Ответ: Программа создаст два string-объекта. Когда мы создаем строку, исп
Сколько объектов типа String создает эта программа? Ответ: Программа создаст два string-объекта. Когда мы создаем строку, используя оператор new, она сначала создастся в Java String Pool и только потом в куче (heap memory). Но только при условии, что этой строки ещё нет в пуле Java String. #java Подписывайтесь на канал 👉@cod_academy

Академия Кода - إحصائيات وتحليلات قناة تيليجرام @cod_academy