Где воздух гор - там тишина снегов, молчание камней и дремлет сила

Программирование Web

PHP проект: самописный код или официальный framework

2019-09-30 09:26:30







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

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

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

Какие плюсы получает РНР проект, который строится на основе официального framework.

1- готовую реализацию паттерна MVC;
2- хорошую документацию по коду и дополнительную информацию в Сети;
3 - возможность легко найти необходимых специалистов по данному framework;
4 - различные расширения и библиотеки, которые дополняют framework;
5 - простой и понятный механизм обновления версий.


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

Во-вторых, не всегда удается найти подходящих специалистов нужного уровня и квалификации. Многие framework очень сложны и знать их досконально может не всяких РНР разработчик. Обычно программист работает сразу с несколькими framework и не в состоянии знать каждый из них от а до я. Узких специалистов немного, и даже в этом случае, возможны проблемы, о которых мы говорили выше.

Отсюда возможные трудности при реализации некоторых частей проекта, когда разработчики сталкиваются с «лакунами» в их знаниях framework, в том числе, в связи с выходящими новыми версиями. Это может привести к задержкам в разработке проекта и даже изменениям в техническом задании.

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


Менее распространенный вариант — это использование так называемого «самописного кода», когда РНР код проекта пишетс с нуля на чистом РНР или с минимальным использованием каких-то библиотек. Такой проект изначально является узко-замкнутым и строго специализированным. В нем реализуется только необходимый функционал кода. То бишь, ничего лишнего и только по жестко техническом заданию.

Какие минусы при таком подходе? Их тоже хватает. Во-первых, проблема с изучением готового кода проекта.Не всегда этот код документирован и отформатирован по стандартам разработки. Отсюда и проблема и со специалистами.Часто бывает, что авторы уходят из проекта и новичкам приходится самостоятельно разбираться с большим объемом чужого кода. И все это, когда времени на ознакомление или нет, или его очень мало.

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

В-третьих, не всегда легко и просто обновить проект при выходе новой версии РНР. Например, если проект был реализован на РНР5, то переход на РНР7 может оказаться очень хлопотным и даже болезненным. Как и переход на разделение проекта на back-end и front-end
с подключением нового JS framework может стать практически невыполнимой задачей.

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

Здесь нет комментариев


Новый комментарий:
























Яндекс.Метрика