Статьи

Модернизация устаревших приложений в PHP: обзор

Скорее всего, вы встречали какой-то ужасный унаследованный код один или два раза в своей жизни в качестве разработчика PHP. Черт возьми, если вы работали с WordPress в какой-то степени, я уверен, что у вас есть. У меня самого была удовлетворительная задача по модернизации монолитного приложения ZF1, и это был самый умственно исчерпывающий (но, по общему признанию, самый образовательный) год в моей карьере.

Если бы тогда у меня была книга Пола М. Джонса «Модернизация устаревших приложений в PHP» , я бы сделал это вдвое быстрее, а работа, которую я выполнял, была бы вдвое лучше.

Книга

Большое спасибо Полу за предоставленную мне обзорную копию после прочтения моего обзора Design Patterns in PHP . Книга представляет собой публикацию Leanpub, то есть, она публикуется самостоятельно, но на этом сходство с другим содержимым Leanpub, которое я потреблял, заканчивается.

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

Счастливый смешной грязный едок

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

достижимость

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

Эта книга предназначена для пользователей PHP среднего и высшего уровня, с акцентом на пожилых людей. Промежуточные разработчики не получат 100% из этого. Они поймут больше контента и смогут использовать его для предотвращения будущих ужасов, работая над своими приложениями прямо сейчас (что, опять же, является достаточной причиной, чтобы рекомендовать покупку), но промежуточные разработчики как правило, все еще знакомятся с лучшими практиками и не выходят из процедурных болот очень долго, грязь и шлам все еще капают с их рубашек «Я наконец знаю PHP».

Шмутцигер Юнге

Книга, однако, действительно сияет как руководство для профессиональных и более высоких разработчиков. Как человек, хорошо знакомый со всеми аспектами, обсуждаемыми внутри, я мог подойти к каждой главе как к проблеме. Каждая глава названа в честь того, что мы будем в ней делать — резюме из одной фразы — что позволило мне представить подход, который я бы выбрал для этого, а затем сравнить его с решением, представленным внутри. В каждой главе используются современные практики и термины, с которыми только люди с приличным опытом работы с PHP хорошо знакомы (к сожалению, давайте работать над этим !), Такие как IoC, DI, пользовательский FrontController, Routing, URL Rewrites и все еще слишком забытое модульное тестирование, и только опытный разработчик сможет неявно понять, зачем нужен подход в данном сценарии, не задаваясь вопросом «почему», вместо этого сосредоточившись сразу на «как лучше».

Технический аспект

На техническом уровне книга звучит удивительно. Каждая глава следует определенному этапу процесса модернизации и представляет код «до» и «после». Более того, код выглядит реально — это не просто еще один контроллер «Acme», это просто еще один Foo / Bar, который вы видели повсюду.

comp_2

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

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

Плюсы

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

Опечатки были минимальными, и именно здесь я должен подчеркнуть важность редактирования. Авторы Leanpub, вы не являетесь вашим худшим критиком, и вы не подходите, чтобы быть вашим собственным редактором . На этой ноте ни ваши друзья, ни родственники и так далее. Если вы пишете книгу, вам нужен кто-то, кто достаточно объективен или достаточно профессионален (желательно оба), чтобы дать вам хорошие, правильные отзывы (положительные или отрицательные), и тот, кто может следить за вашим прогрессом от главы к главе. Обнаружение книги — отстой, когда вы уже написали, — это никому не помогает — вы не можете переписать ее легко, вы не можете изменить ее ход, и, как правило, вы упустили хорошую возможность.

Джек-рассел-терьер с капуттем бух

Книга Павла была хорошо отредактирована различными сторонами по различным аспектам, и это видно. Почти без ошибок, отличное форматирование, лучшие практики, хорошие объяснения и отличные примеры — вот что делает эту книгу выше типичного продукта Leanpub. Кроме того, несмотря на то, что Пол был ведущим в проекте AuraPHP, Пол абсолютно не пытался заставить читателя перейти на него или использовать его компоненты в процессе модернизации. Это, наряду с другими преимуществами, показывает, что книга предназначена для долгосрочного качественного ресурса, а не для саморекламы.

Минусы

Единственным недостатком, который я смог найти, было то, что некоторые главы ссылались на приложения с кодом, а не обсуждали и совершенствовали встроенный код, что иногда нарушало беглость чтения, вызывая неуклюжие скачки назад и вперед между контентом — что-то, что до сих пор нет у электронных книг и программ для чтения PDF прибить идеально. Если бы мне нужно было что-то улучшить во втором выпуске, то было бы убедиться, что все главы следуют подходу первого и последнего нескольких — встроенный код, и ни один из приложений не переходит (хотя Приложения должны быть сохранены как есть, для дальнейшего использования) , Это несколько удлинит книгу, но позволит более гладко читать.

Вывод

В заключение — иди купи эту книгу сейчас .

Действительно, по шкале из 5 слонов я легко могу дать ему 4,5 (половину слона вычеркнуть только за «жулик», который я перечислил выше). Это идеальный путеводитель по унаследованной модернизации, и я вижу, что вернусь к нему в будущем, встречая ужасы старых приложений.

Книга доступна на Leanpub, и Пол любезно предложил скидку 10% для читателей SitePoint. Чтобы использовать его, просто нажмите на эту ссылку .