Где насматривать типовые паттерны и алгоритмы в программировании?

 Публичный пост

Вот я могу себе представить видео на YouTube, где кейс за кейсом разбирают типовые и даже нестандартные ситуации на дороге для мотоциклистов и водителей автомобиля.

Для писателей и сценаристов есть TVtropes.org

У дизайнеров есть Pttrns

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

Давайте в этом посте перечислим такие ресурсы, возможно, кому-то кроме меня это будет полезно!

25 комментариев 👇

Рекомендую такие книги как:

Роберт Мартин - "Чистый Код", "Чистая Архитектура" и "Чистый Программист"
Егор Бугаенко - "Elegant Objects"
Александр Шень - "Программирование. Теоремы и задачи"
Сассман - "SICP"
Эрих Мария Гамма - "Паттерны"

На десерт Столярова или Александреску. Но вообще список можно продолжать бесконечно!

  Развернуть 1 комментарий

@begor, не знаю ирония это или нет, предположу что нет. Оставлю про clean code: https://qntm.org/clean
Я бы предложил Pragmatic Programmer + A Philosophy of Software Design вместо всего Мартина

  Развернуть 1 комментарий

@inkoit, Йессссс. Глоток свежего воздуха в этих интернетах. Надоело со всех щелей слышать о чистом коде и т.д. Он, автор, распопуляризирован, как святой чуви. Я не спорю - он авторитет. Но преподноситься его книги без всяких сомнений и критики.
Мне понравилась в твоей статье ссылка на статью из персонального когда by Dan Abramov - https://overreacted.io/goodbye-clean-code/. Где он кратко, ясно и лаконично объяснил связь между чистым кодом + гордостью/эгоистичностью людей. Ну и вообще, что чистый код у каждого свой. И также приобритание незаметной супер-способности всё абстрагировать и чистить в коде, как саму цель, вместо того, чтобы сфокусироваться на целях, которые выполняет код. Вот та грань, когда человеческие качества могут погубить код/проэкт/команду и т.д.
Нравиться читать статьи умных чуваков)))
Ну ещё, раз меня бомбит - иногда в книге дают очевидные и простые советы, entry-level советы. Окей - я не против, возможно некоторые их не знают. Но их как-то по мне многовато. Но это моё личное мнение. Некоторые книги написаные для читателей с разным уровнем: от чувака, который ничего не знает про код до самого Дена Абрамса.

  Развернуть 1 комментарий

@KonDob, есть и другая крайность в книгах, которые можно встретить на полках магазинов, а некоторые из них еще и рекомендуют уважаемые преподаватели из уважаемых ВУЗов.

Недавно попался вот такой код:

Код из книги
Код из книги

  Развернуть 1 комментарий

@shultais, OMG.

  Развернуть 1 комментарий

@KonDob, блин. Я вот словил такой вайб про очевидный советы от Совершенного кода Макконела. То есть книжка наверное хорошая. Но даже спустя два года опыта не выловил ни одной полезной незнакомой мысли -> не понимаю, почему эту книжку так любят.

  Развернуть 1 комментарий

@begor, Эрих Мария Ван - на белградском фронте без перемен

  Развернуть 1 комментарий

@Aiaz, в свое время эта книга очень помогла, жаль что в оригинале почти не найти

  Развернуть 1 комментарий

@Aiaz, читая эту книгу я заплакал... Потом попробовал найти момент, на котором я заплакал, и получилось только за линию, пришлось плакать снова...

  Развернуть 1 комментарий

@begor, Нейорнка Егора как всегда взломала счётчик классов. Видимо потому что молодой, шутливый, ему всё легко... 🤣

  Развернуть 1 комментарий

Принесу рефакторинг гуру, сайт на котором я подсматриваю паттерны.
https://refactoring.guru/design-patterns

  Развернуть 1 комментарий

@n0rmed, только что хотел вбросить про рефакторинг гуру, но меня опередили)

  Развернуть 1 комментарий

С фокусом на Python: https://python-patterns.guide
Ну и если посмотреть пару выступлений автора (Brandon Rhodes) на ютубе, то быстро отправит в спираль видосов на эту тему

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий
  Развернуть 1 комментарий

Статьи на сайте статического анализатора PVS-Studio: https://pvs-studio.ru/ru/blog/posts/ , разбираются ошибки в коде опенсорсных проектов.

Если хочется посмотреть на хороший код можно искать на github по ключевому слову "awesome" + название языка программирования. Например для python: https://github.com/vinta/awesome-python , c++ https://github.com/fffaraz/awesome-cpp и т.д.

  Развернуть 1 комментарий

Закину каналы, которые насматриваю для подготовки к интервью.
https://youtube.com/@freecodecamp - разное по разработке.
https://youtube.com/@NeetCode - только разборы задач на алгосы.
https://youtube.com/@ByteByteGo - system design, как работаю разные сервисы типа авторизации, платежей и тд.

  Развернуть 1 комментарий

добавлю свои 5 копеек - помимо указанного выше канала Neetcode есть его отличный сайт, где представлен роудмэп по задачам, объединенным одной темой https://neetcode.io/roadmap

  Развернуть 1 комментарий

Refactoring.guru (из рф нужен впн), там оч подробно много паттернов разобрано

  Развернуть 1 комментарий
Анатолий Корсаков Software Engineer (программирую на java) 1 августа 2023

Немного не по теме, а какое это видео на YouTube для автомобилистов?

  Развернуть 1 комментарий
Aleksei Zinchenko Что-то делаю на компьютере 28 августа 2023
  Развернуть 1 комментарий

По паттерна мне понравилась head first design patterns. Там описано простым языком довольно и с юмором.

А алгоритмы и структуры данных
в GeeksforGeeks
https://www.geeksforgeeks.org
GeeksforGeeks и глянуть документацию самого языка. Я в свое время кучу всего крутого в документации питона нашла, в том числе реализации алгоритмов).

  Развернуть 1 комментарий

@ZeroAi, Head First Design Patterns касаются "чистого" ООП. С моей точки зрения, довольно специфичная книга. Подойдёт, если вы варитесь в Java/C# энтерпрайзе.

  Развернуть 1 комментарий

У коллег в коде. Если компания достаточно большая, то там хватит, и паттернов, и антипаттернов

  Развернуть 1 комментарий

Всё познаётся на практике.

Если ваша текущая работа не связана с кодом, кажется, полезно просто смотреть код опенсорсных проектов (не просто смотреть, а разбираться в каких-то кусках). Со временем складывается понимание общих принципов, как пишутся библиотеки и какие подходы существуют. Легче видишь проблемы. Чаще вспоминаешь типовые решения.

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

  Развернуть 1 комментарий

😎

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

Что вообще здесь происходит?


Войти  или  Вступить в Клуб