Академия Кода – Telegram
Академия Кода
2K subscribers
673 photos
2 videos
2 files
50 links
Академия кода. Полезный контент по программированию. По всем вопросам @evgenycarter
Download Telegram
Класс-оболочка и тип данных

В приведенном выше примере второй оператор печати не будет отображать значение true, поскольку сравниваются ссылки на объекты класса-оболочки, а не их значения.

#java

Подписывайтесь на канал 👉@cod_academy
Копирование словарей и других объектов

Новички часто допускают такую ошибку при создании копии списка:
lst2 = lst1

При работе с одним из словарей оказывается, что изменяются оба.

Почему так происходит?
Об этом — в завтрашнем посте. Пока что расскажу, как этого избежать:

У списка существует специальный метод copy(), который нужен как раз для таких случаев.

Но подобное работает не всегда! Если имеется множество вложенных списков, то надо сделать полное копирование импортировав модуль copy и воспользовавшись методом deepcopy().

#python

Подписывайтесь на канал 👉@cod_academy
👍2
Длина числа

Для вычисления количества цифр в числе вместо цикла можно эффективно использовать log.

#cpp

Подписывайтесь на канал 👉@cod_academy
Метод fill()

Присваивает определенное значение int к каждому элементу указанного целочисленного массива. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.).

#java

Подписывайтесь на канал 👉@cod_academy
Как объединить все элементы списка Python в одну строку?

Советую пользоваться первым способом. Малое количество строк кода и его работоспособность - одно из главных качеств хорошего кода. Посмотреть пример в онлайн редакторе.

#python

Подписывайтесь на канал 👉@cod_academy
👏1
Вы можете написать функцию, которая будет возвращать два и более значений, с помощью std::tuple и std::tie.

#cpp

Подписывайтесь на канал 👉@cod_academy
Interface for Consts

Очень часто встречаются интерфейсы для описания констант. Это не правильно с точки зрения ООП. Интерфейс должен описывать поведение, не больше не меньше. Этот пункт не очень принципиален, тем более что результат компиляции будет один и тот же, но все же java это ООП язык и было бы хорошо придерживаться его принципов.

#java

Подписывайтесь на канал 👉@cod_academy
👍2
Как копировать файлы из одной папки в другую на Python?

Библиотека под названием shutil включает в себя несколько полезных функций для создания копий объектов на жестком диске.

Посмотреть пример в онлайн редакторе.

Подписывайтесь на канал 👉@cod_academy
👍1
Использование emplace_back вместо push_back

В C++ 11 emplace_back работает так же, как push_back, добавляя элементы в конец вектора. emplace_back работает быстрее, так как push_back сначала создает временную переменную, а затем добавляет ее в конец вектора.

#cpp

Подписывайтесь на канал 👉@cod_academy
NullPointer Exception

Исключения нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта.

Возьмем для примера следующую строчку кода:
int noOfStudents = school.listStudents().count;

Если объект school окажется равен Null или его метод listStudents вернет Null, вы получите исключение NullPointerException.

Хорошей практикой разработки на Java является предварительная проверка на Null в методах.

#java

Подписывайтесь на канал 👉@cod_academy
👍2
Присвоение первого непустого значения из ряда

Следующая инструкция присвоит первый непустой (имеющий истинное значение) объект из множества объектов A, B и С. Или None, если все предыдущие объекты окажутся пустыми.

#python

Подписывайтесь на канал 👉@cod_academy
👍1
Рекомендуем к прочтению книгу Александра Бындю "Антихрупкость в IT"

Эта книга — результат многолетнего опыта построения IT-продуктов. И прежде всего она о том, как выстроить процессы разработки IT-систем таким образом, чтобы успевать вовремя подстроиться под любые изменения.

В её основе — описание работающих практик, примеры из реальных проектов, анализ ошибок и выводы. В книге собраны рекомендации для владельцев бизнеса и разработчиков. Первые приобретут систематизированные знания о том, как правильно взаимодействовать с IT, а вторые — как делать хорошо и не делать плохо.

Сайт издания

Ознакомиться с книгой
Как включить все стандартные библиотеки одной командой

Чтобы разом включить в проект все стандартные библиотеки, используйте #include <bits/stdc++.h>. Это особенно полезно в условиях дефицита времени на соревнованиях по программированию.

Но помните, что:

#include <bits/stdc++.h>
содержит множество заголовочных файлов, которые, возможно, и не понадобятся в конкретном проекте. А это может привести к увеличению времени компиляции.

#include <bits/stdc++.h> не является стандартным заголовочным файлом библиотеки GNU C++. Таким образом, не относящиеся к типу GCC (GNU Compiler Collection) компиляторы могут испытывать затруднения в процессе исполнения. Однако так бывает не часто!

#cpp

Подписывайтесь на канал 👉@cod_academy
👍2
Пирамидальная сортировка

Пирамидальная сортировка является методом сортировки, который интерпретирует элементы в массиве, как почти полное бинарное дерево.
Она берет элементы массива и вставляет их в пирамиду.

После построения пирамиды, из нее по очереди удаляются наибольшие элементы и вставляются в конец массива, где и находятся в отсортированном виде.

Общее время сортировки расчитывается по O(N logN) для N элементов.

#java

Подписывайтесь на канал 👉@cod_academy
👍1
Присвоение первого непустого значения из ряда

Следующая инструкция присвоит первый непустой (имеющий истинное значение) объект из множества объектов A, B и С. Или None, если все предыдущие объекты окажутся пустыми.

#python

Подписывайтесь на канал 👉@cod_academy
👍1
Ссылки в C++

Когда переменная объявляется как ссылка, она становится альтернативным именем для существующей переменной. Переменную можно объявить как ссылку, поместив в её объявление "&".

#cpp

Подписывайтесь на канал 👉@cod_academy
👍1
Google-json (GSON)

Google-json, как понятно из названия, ещё одна разработка прямиком из Google. Библиотека реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно.

Примерно вот так выглядит сериализация и десериализация с помощью GSON(см картинку).

Как видно, перевод объекта проходит с помощью минимального количества легкочитаемого и понимаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json.

#java

Подписывайтесь на канал 👉@cod_academy
👍1
Почему присвоение не является копированием?

В python все является объектом. В этом легко убедится воспользовавшись функцией dir().

При присвоении в новую переменную отправляется ссылка на объект. А при изменении объекта ссылка на него не меняется.

Тут многие могут спросить про строки и числа, поэтому отвечаю — с ними то же самое. Просто при операциях не изменяется старый объект, а создается новый. Все это можно проследить воспользовавшись функцией id(), которая показывает номер объекта.

Интересно то, что за частью чисел в языке на программном уровне закреплена ссылка на объект. Можете попробовать сами.

#python

Подписывайтесь на канал 👉@cod_academy
👍2