453 subscribers
69 photos
25 files
83 links
Пишу иногда интересно, а иногда не очень. Предложения, сотрудничество @Javacoding_bot
加入频道
Продолжая тему пятничного поста про код-ревью, грех не вспомнить про «Чистый код» Роберта Мартина.
Краткий обзор от меня, судя по тому, что помню:

📕 Мысли и советы вроде как простые и очевидные, но зачастую игнорируемые даже опытными программистами.

📕 Основной посыл в том, чтобы писать код, который просто работает, а еще чтобы увеличивать срок его службы за счет этого.

📕 Книга скорее для ребят 1-3 года в программировании, учит задумываться об оптимизации блока кода до начала написания этого же блока и будет отличным туториалом, чтобы привить себе навыки грамотного написания и документирования кода. Совсем начинающим будет сложно осилить главу про многопоточность, например. А опытным рекомендую сделать эту книгу настольной (см.1 пункт :))

📕 Есть местами перевес в сторону идеального кода с забиванием на прагматизм. Я все-таки придерживаюсь мнения, что чистый код нужен не просто для красоты, а из практических соображений.

📕 В книге мало воды и есть смешные шутки)

📕 Перевод нормальный, но с некоторыми терминами не очень соглашусь, прикреплю вам русскую версию 2019 года полистать.

Закончу в стиле статусов ВК из нашей юности)

«Чистый код всегда выглядит так, будто его писал человек, которому не всё равно», Майкл Фезерс.
Чтобы работать рядовым разработчиком необязательно уметь эффективно сортировать списки и уметь строить бинарные деревья.

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

Структуры данных – основа всех вычислений, большая часть программирования вращается вокруг манипулирования структурами данных. Выбор неподходящих структур будет иметь огромное значение, особенно если проект большой.

У каждой профессии есть свои инструменты – это наши.

Безусловно на повышение скила это будет работать только в сумме с хорошим знанием своей основной платформы.

Если вдруг вы тот самый разработчик, который однажды подзабил на это, точно знаю, что вот эти два курса очень неплохие:

➡️https://www.udemy.com/course/introduction-to-data-structures/

➡️https://ru.coursera.org/specializations/data-structures-algorithms

Есть вся база, отличные примеры.
Про литературу по этой теме сделаю пару постов потом.
Ну и старый, но все еще радующий мем для бодрости духа при изучении
Смотрите какая классная статья по вопросам на собеседованиях о Spring Boot. Мне очень нравится, что она именно про понимание процессов, а не простое заучивание функционала. Всегда бы так.

Ссылка:
https://habr.com/ru/post/544472/
Как выглядит типичный дейлик
В своей работе я часто сталкиваюсь с использованием шаблонов проектирования DTO.

Данные на клиенте и на сервере в наших проектах структурируются по-разному. На стороне сервера этого требует оптимальное представление информации в базе данных и повышение производительности. На стороне клиента нет необходимости иметь закрытую информацию (пароль, email, роль и т.п.). Для этого могут использоваться специальные объекты – DTO (Data Transfer Object), которые содержат только те поля, которые нужны [на фронтенде]. Подробнее об этом можно найти статьи в интернете, например эту.

Но сегодня я хотел рассказать о том, какой инструмент есть для преобразования entity в dto и обратно, тем самым избегая boilerplate code.

Библиотека MapStruct – это генератор кода, который значительно упрощает реализацию сопоставлений между типами Java-компонентов на основе подхода соглашения, а не конфигурации. С MapStruct нужно создать интерфейс, а библиотека автоматически создаст конкретную реализацию во время компиляции.

Разобравшись с этой или подобной библиотекой, применяя ее, разработчик сокращает количество кода и время разработки.
Быстрый старт можно начать прямо на официальном сайте, по ссылке.
С принципами работы можно ознакомиться на примерах от разработчиков, доступных тут, или найдя статью наподобие этой.
Отличная статья о том, как у нас учат будущих ИТ-специалистов, четко подсвечивает основные недостатки.

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

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

Надеюсь все-таки, что масштабные изменения не заставят себя ждать.
Роберт Лафоре, «Структуры данных и алгоритмы в Java».
Как и обещал, начинаю постепенно делиться литературой по структуре данных.

Robert Lafore, Data Structures & Algorithms in Java

Основа основ. Со своими минусами: на мой вкус, воды многовато, местами изложены прописные истины, но для того, чтобы сформировать в голове базу, подходит.

Главное - не читайте в русском переводе: большая часть примеров там не запускается, еще и в предисловии вместо Java пишут JavaScript.
Пятничный мем с высокой концентрацией жизы.
Давненько не было никаких теоретических вопросов. Вспомним, что мы знаем о классах и методах?
Одна из моих любимых статей о важности системного подхода, пусть и напоминает по стилю расхожие мотивирующие цитаты.

Часто наблюдаю, как джуны пытаются решать задачи, не задумываясь об альтернативных подходах. И почти никогда – как кто-то из них применяет комплексное мышление. А ведь это ключевое умение для программиста.

Как еще развивать навык мыслить системно? Самый простой способ – отказываться от ежедневных привычных действий: менять маршрут от дома до работы, очередность рутинных задач. А еще расширять кругозор. Так постепенно приучаешься видеть в любой ситуации множество вариантов, среди которых затем находишь решение.
Продолжаю тему литературы о структурах данных
Allen B. Downey, Think Data Structures: Algorithms and Information Retrieval in Java (2017)
Allen_B_Downey_Think_Data_Structures_Algorithms_and_Information.pdf
5.2 MB
Довольно интересная и насыщенная информацией книга: там и анализ алгоритмов, и хэш-таблицы, и двоичное дерево. Она небольшая и ориентирована скорее на опытных разрабов, но из-за этого некоторые темы разобраны не так подробно, как следовало бы (про DFS вот совсем мало). Зато даны реальные примеры, а не псевдокод. Рекомендую.
Актуально каждую пятницу.
Очень спорная статья.

С одной стороны, прекрасно понимаю всеобщую усталость от теоретических вопросов, которые никакого отношения к происходящему на проекте не имеют. С другой, уверены, что хотите взять на работу человека, который не может внятно объяснить, чем LinkedList отличается от ArrayList?

Считаю, что выявлять реальный технический бэкграунд кандидата какими-то другими методами, кроме тех собеседования – ненадежно и некорректно. Разумеется, собеседование не должно состоять только из теорвопросов, все же это собеседование, а не экзамен. Но именно такие вопросы поставят всех кандидатов в равное положение. А вот с теми, кто на них ответил, можно уже и про опыт на прошлых проектах поговорить, и бизнес-задачи им предложить на декомпозицию.