Pull to refresh
3
0
Send message

Как избежать когнитивной перегрузки: способы оптимизации кода для разработчиков

Level of difficultyMedium
Reading time14 min
Views7.6K

По мнению Артема Закируллина*, одна из фундаментальных проблем, с которой сталкиваются разработчики при анализе кода – высокая когнитивная нагрузка. Это не абстрактное, а реальное ограничение возможностей, которое стоит времени и денег. На чтение и понимание кода, тратится больше времени, чем на его написание. Поэтому, разработчику нужно постоянно задаваться вопросом: не пишет ли он код, чтение которого создает чрезмерную когнитивную нагрузку?

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Total votes 49: ↑48 and ↓1+55
Comments12

Простой пример использования Symfony Messenger

Level of difficultyEasy
Reading time6 min
Views2.4K

Пришёл и мой черёд асинхронно и многопоточно средствами PHP кое-что пообрабатывать… И я, естественно, вспомнил про компонент Messenger фреймворка Symfony.

Ранее я никогда Symfony Messenger не использовал.
Чтобы понять, как с ним работать, я пытался найти какой-то простой, законченный и самодостаточный пример, понятный даже чайнику, но мне это не удалось...

Всё, что находилось, было либо слишком сложным, либо это были какие-то отдельные куски кода, понятные только тем, кто уже работал с Symfony Messenger. К тому же всё, что находилось, в основном было "заточено" либо под Redis, либо под RabbitMQ. установка которых как-то немного перебор для учебного примера…

В-общем, я создал и выложил на GitHub такой простой, законченный и самодостаточный пример работы Symfony Messenger совместно с Symfony Console.

Посмотреть пример работы Symfony Messenger
Total votes 8: ↑8 and ↓0+12
Comments0

Юнит-тесты: чек-лист методик проектирования

Level of difficultyEasy
Reading time10 min
Views11K

Привет, Хабр! Меня зовут Василий Косарев, я Java‑разработчик в CDEK. Много раз мы слышали о необходимости писать модульные тесты, о том, что весь код должен быть ими покрыт. При этом мне не встречалось списка: какие именно методики лучше использовать при тестировании кода.

Я задумался: есть ли чек‑лист/ руководство, который облегчил бы генерацию тестовых сценариев и помог выявлять серьёзные ошибки? Чтобы вдумчиво подходить к тестированию и не тратить ресурсы впустую, сводя к минимуму количество необходимых тестов.

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

Читать далее
Total votes 40: ↑39 and ↓1+40
Comments12

Улучшение кода без споров и цитирования известных практик

Level of difficultyEasy
Reading time16 min
Views10K

Не секрет, что при формировании новой команды руководители (Team Leader, Tech Leader) сталкиваются с проблемой формирования единого стиля написания программ, так как все члены команды новые, и у каждого из них свой подход к организации кода и выбору используемой практики. Как правило, в большинстве случаев это приводит к длинным диспутам на ревью, которые в итоге перетекают в различные толкования известных практик, таких как SOLID, KISS, DRY, и т.д. Принципы использования этих практик довольно размыты и, при должном упорстве, легко найти парадокс, когда одна из них противоречит другой. Например, рассмотрим Single Responsibility и DRY.

Одна из вариаций определения принципа единой ответственности (Single Responsibility - буква S из аббревиатуры SOLID) гласит, что каждый объект должен иметь одну ответственность, и эта ответственность должна быть полностью инкапсулирована в класс. Принцип DRY (Don’t repeat yourself) предлагает избегать дублирования в коде. Однако, если у нас в коде есть один набор данных (DTO), который может использоваться в разных слоях/сервисах/модулях, какому из этих принципов нам следовать? Безусловно, во многих книгах по программированию разбираются похожие ситуации, как правило, в них говорится, что если речь идет о разных объектах/функциях с одинаковым набором свойств и логики, но принадлежащим разным доменным областям, то дублированием это не является. Но как доказать что эти объекты ДОЛЖНЫ принадлежать разным доменным областям, и, главное, готов (и уверен ли в своих силах) руководитель доказывать это утверждение?

Читать далее
Total votes 19: ↑18 and ↓1+25
Comments17

Проверка тестов PHP API на соответствие определениям OpenAPI — пример Laravel

Reading time8 min
Views8.5K

OpenAPI — это спецификация, описывающая API-интерфейсы RESTful в форматах JSON и YAML так, что он понятен и людям, и машинам.

Определения OpenAPI не привязаны к конкретному языку и могут использоваться самым разным образом.

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments0

Я до последнего буду защищать сильную статическую типизацию

Level of difficultyMedium
Reading time8 min
Views24K

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

Разумеется, существуют сферы применения нетипизированных языков (или вариантов языков), например, они гораздо удобнее при работе с REPL или для одноразовых скриптов в средах, которые и так уже безнадёжно нетипизированы (например, в шелле). Но почти во всех остальных случаях сильная типизация крайне предпочтительна.

Читать далее
Total votes 61: ↑55 and ↓6+65
Comments135

Чтение на выходные: «Идеальный программист» Роберта Мартина

Level of difficultyEasy
Reading time3 min
Views7.8K

Роберт Мартин — инженер, программист, консультант в области разработки ПО. Известен как автор книг о чистом коде, архитектуре и Agile. Пока что мы прочитали одну из его книг — «Идеальный программист», и уже хотим продолжить чтение по теме. Поговорим о том, чем зацепила эта работа и даже немного поспорим с рандомными отзывами в интернете (в том числе на Хабре) о ней.

Читать далее
Total votes 9: ↑6 and ↓3+3
Comments7

Код-ревью и советы по повышению его качества: на что обратить внимание в первую очередь?

Reading time4 min
Views5.6K

Привет, Хабр! Сегодня поговорим о код-ревью, т. е. проверке и оценке качества кода выполненной разработчиком задачи перед её релизом. У код-ревью несколько положительных моментов:

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

Но на что обращать внимание в процессе код-ревью? Об этом сегодня и поговорим.

Читать далее
Total votes 6: ↑5 and ↓1+10
Comments8

Что ждут от мидлов в бэкенд-разработке: рекомендации от синьоров

Level of difficultyEasy
Reading time19 min
Views10K

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

Читать далее
Total votes 10: ↑5 and ↓50
Comments8

Проблемы при реализации микросервисной архитектуры

Level of difficultyEasy
Reading time7 min
Views5.5K

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

Микросервисная архитектура - это подход к построению приложений, в котором они разбиваются на более мелкие и управляемые блоки (микросервисы), каждый из которых выполняет определенную функцию. Такой подход отличается от монолитных приложений, где все компоненты связаны тесно между собой и в одном кодовом базе.

Читать далее
Total votes 10: ↑8 and ↓2+10
Comments8

Исчерпывающее руководство по различным типам API

Level of difficultyEasy
Reading time8 min
Views27K

API (Application Programming Interface, программный интерфейс приложения), является жизненно важным компонентом в современном ландшафте разработки программного обеспечения, обеспечивая строительные блоки для взаимодействия приложений друг с другом. В этой статье рассмотрим пять основных типов API: REST, SOAP, WebSocket, gRPC и GraphQL, чтобы получить более четкое представление об их функциях, особенностях и идеальных сценариях использования.

Читать далее
Total votes 15: ↑14 and ↓1+15
Comments2

Чистый код. Часть 3

Reading time15 min
Views16K

Привет! Этим постом я завершаю цикл из конспектов видеолекция Дяди Боба про чистый код.

Сегодня обсудим обработку исключений, комментарии к коду, форматирование, размеры файлов и дата-классы.

Обработка исключений

Не раскрывайте реализацию

Майкл Физерс (Working effectively with legacy code) сказал: «Если обработка ошибок раскрывает реализацию — то это неправильная обработка ошибок». Не раскрывать реализацию можно, если написать исключения перед тем, как написать реализацию функции (привет TDD — по-другому и не получится).

Рассмотрим классCommissionCalculator , который обменивает сумму в разных валютах.

Читать далее
Total votes 23: ↑20 and ↓3+20
Comments52

Как контролировать вес, не считая калории?

Level of difficultyEasy
Reading time2 min
Views12K

Друзья, приветствую! Не так давно в журнале Nature Food вышло исследование, которое дает ответ на популярный вопрос: что и как нужно есть, чтобы не толстеть/похудеть?

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

Итак, исследователи проанализировали 2700 протоколов питания и вывели 3 наиболее сильных фактора, которые помогают бороться с лишним весом.

Читать далее
Total votes 38: ↑5 and ↓33-26
Comments44

Information

Rating
4,471-st
Location
Украина
Date of birth
Registered
Activity