Pull to refresh
3
0

Пользователь

Send message

Проблемы накапливаются. Софт тормозит. Везде некомпетентность и хаос

Level of difficultyEasy
Reading time6 min
Views53K


Закон Старджона гласит: «Ничто не может всегда идти правильно». Рано или поздно всё ломается.

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

Взять недавний случай с багом в Windows Defender, который вызывал тормоза Windows. Крайне показательная история. Да, этот баг обнаружили, но в кодовой базе остались такие же. Мы этого не знаем наверняка, но вполне логично предположить, что количество скрытых багов растёт пропорционально кодовой базе. Поэтому софт всё больше тормозит со временем. Это естественный процесс, почти как закон природы.
Читать дальше →
Total votes 148: ↑106 and ↓42+91
Comments396

Честные модули внутри PHP: теперь они существуют

Reading time15 min
Views8.8K

Низкий порог входа и строгость языка программирования — вещи обычно несовместимые. Потому что ты либо, как Rust, бьёшь по рукам borrow checker’ом — либо, как PHP, позволяешь не задумываться о типах и быстро прототипировать. 

На самом деле, если писать код грамотно, это становится неважным и язык перестаёт иметь значение. Архитектура важнее языка, и хороший код на PHP ничем не отличается от аналогичного кода на любом другом ООП-языке. Другое дело, что возможность «любой домохозяйке» писать на PHP сопровождается и риском наворотить полное неподдерживаемое безобразие. Поэтому нам нужны тайпхинты, линтеры, статические анализаторы и подобные инструменты. 

Но в PHP есть и ещё один изъян: в нём любой класс, функция или константа — глобальны. Можно создать класс из любого места в коде, и нет способа скрыть его или сделать деталью реализации где-то в отдельной папке. Иными словами, в PHP нет того, что в других языках называется модулями.

Наша новая open-source разработка называется Modulite и внедряет в PHP модули. Это сквозная технология: мы внедряемся в IDE, в PHPStan, в KPHP, в CI, в Composer — и делаем так, будто бы модули нативно есть в языке PHP.

Читать далее
Total votes 46: ↑43 and ↓3+55
Comments10

Правда ли то, что скрам уничтожает отличных программистов, или дело в том, что его неправильно применяют?

Reading time12 min
Views38K
Недавно наше внимание привлёк один вопрос, заданный на stackexchange.com. Этот вопрос был направлен на то, чтобы разобраться с влиянием скрама на работу программистов. Автор вопроса, пользователь Qiulang, поднимает довольно смелую тему: «Скрам превращает хороших разработчиков в программистов средней руки. Возможно ли это?».

Основная идея фреймворка скрам заключается в организации процесса разработки для более быстрого выполнения работ на различных этапах жизненного цикла проекта. Но всегда ли такой подход подталкивает разработчиков к правильным моделям поведения? Многие пользователи, присоединившиеся к обсуждению вышеупомянутого вопроса на Stack Overflow, сталкивались с похожими вещами, когда разработчики «срезают углы», слишком большое значение придают высоким баллам, назначенным их тикетам, или даже прикидываются перед менеджерами высокопроизводительными сотрудниками. Как избежать этих опасностей?



Вопрос, о котором идёт речь, перешёл с workplace.stackexchange.com на softwareengineering.stackexchange.com. Это говорит о том, что программисты рассматривают соображения, связанные со скрамом и с его эффективностью, как нечто достаточно серьёзное, выходящее за рамки управления циклом разработки ПО. Они ощущают воздействие этого метода управления проектами на рабочую обстановку в целом.
Читать дальше →
Total votes 41: ↑35 and ↓6+48
Comments137

Представляем PHP 7.4: Производительность, Возможности, Устаревший Функционал

Reading time8 min
Views21K

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


PHP является важным элементом всемирной паутины и используется более чем на 79% всех сайтов. Известные сайты, такие как Facebook, Википедия, WordPress и многие другие используют PHP.

Мы можем увидеть что скорость веб-сайтов WordPress увеличивается вдвое, если сравним сайты, работающие на PHP 5 и 7. От последней версии больше всего выиграют сайты на WordPress.

Читать дальше →
Total votes 16: ↑7 and ↓9+3
Comments22

Чистые тесты на PHP и PHPUnit

Reading time11 min
Views31K

В экосистеме PHP существует много инструментов, обеспечивающих удобное тестирование на PHP. Одним из самых известных является PHPUnit, это почти синоним тестирования на этом языке. Однако о хороших методиках тестирования пишут не так много. Есть много вариантов, для чего и когда писать тесты, какого рода тесты, и так далее. Но, честно говоря, не имеет смысла писать тест, если позднее вы не сможете его прочесть.

Тесты — это особая разновидность документации. Как я ранее писал о TDD на PHP, тест всегда будет (или хотя бы должен) ясно говорить о том, в чём заключается задача конкретной части кода.

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

Я подготовил набор методик, которые станут подспорьем для PHP-разработчиков в написании хороших, удобочитаемых и полезных тестов.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments23

Laravel. Локализованный роутинг

Reading time15 min
Views9.3K

КДПВ


Привет, Хабр!


UPD
На этом ресурсе актульность статьи может оказаться умноженной на ноль одним комментарием. Задача описанная в статье может быть с меньшей болью решена библиотекой mcamara/laravel-localization.
За наводку спасибо DExploN!

Кат приподнят. Умноженное на ноль — снизу.
Читать дальше →
Total votes 8: ↑7 and ↓1+10
Comments10

Зачем ограничивать наследование с помощью final?

Reading time45 min
Views37K

Вы наверняка слышали это знаменитое высказывание от GoF: «Предпочитайте композицию наследованию класса». И дальше, как правило, шли длинные размышления на тему того, как статически определяемое наследование не настолько гибко по сравнению с динамической композицией.


Гибкость – это конечно полезная черта дизайна. Однако при выборе архитектуры нас интересуют в первую очередь сопровождаемость, тестируемость, читабельность кода, повторное использование модулей. Так вот с этими критериями хорошего дизайна у наследования тоже проблемы. «И что же теперь, не использовать наследование вообще?» – спросите Вы.


Давайте посмотрим на то, как сильная зависимость между классами через наследование может сделать архитектуру вашей системы чрезмерно жесткой и хрупкой. И зачем использовать одно из самых загадочных и неуловимых в коде ключевых слов – final. Сформулированные идеи демонстрируются на простом сквозном примере. В конце статьи приведены приемы и инструменты для удобной работы с final классами.


Проблема хрупкого базового класса


Проблема хрупкого базового класса

Читать дальше →
Total votes 49: ↑42 and ↓7+48
Comments46

PHP-Дайджест № 169 (26 ноября – 9 декабря 2019)

Reading time4 min
Views15K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4, PhpStorm 2019.3, InfectionPHP и другие релизы, статистика версий PHP, об использовании FFI, видео с прошедших конференций и митапов, порция полезных инструментов, и многое другое.

Приятного чтения!


Читать дальше →
Total votes 64: ↑64 and ↓0+64
Comments29

Моё разочарование в софте

Reading time11 min
Views389K

Суть разработки программного обеспечения
— Нужно проделать 500 отверстий в стене, так что я сконструировал автоматическую дрель. В ней используются элегантные точные шестерни для непрерывной регулировки скорости и крутящего момента по мере необходимости.
— Отлично, у неё идеальный вес. Загрузим 500 таких дрелей в пушку, которые мы сделали, и выстрелим в стену.


Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.

Для примера, современные автомобили работают, скажем, на 98% от того, что физически позволяет нынешняя конструкция двигателя. Современная архитектура использует точно рассчитанное количество материала, чтобы выполнять свою функцию и оставаться в безопасности в данных условиях. Все самолёты сошлись к оптимальному размеру/форме/нагрузке и в основном выглядят одинаково.

Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений.
Total votes 505: ↑474 and ↓31+443
Comments2474

Information

Rating
Does not participate
Registered
Activity