Pull to refresh

Фреймворк или свои велосипеды?

Reading time 3 min
Views 1.2K
вообще это копипаст ответа на топик:PHP > Хватит изобретать велосипеды!

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

Я тим лидер команды проекта incomeproject.com (это большая площадка для создания партнерских программ), могу сказать, что использование сторонних библиотек осложнено как минимум по таким причинам:чтобы использовать такую библиотеку в серьезном проекте ей нужно полностью доверять, чтобы ей доверять ее надо изучить и обкатать на каком-либо «не важном» проекте, таких обычно нет.

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

Таким образом что б начать пользовать Фреймворк вам нужно:
  1. попробовать его где либо в слабо значительном месте.
  2. изучить всю доку и знать типичные примеры, желательно потусовать в сообществах и узнать типичные проблемы
  3. понять идеалогию решения (большой Фреймворк, много авторов, а значит много разношерстных решений)
  4. осознать ВСЕ уровни абстракций используемых в Фреймворке.
  5. написать где-то долго играющий, но опять же критичный проект на этом Фреймворке.
вот, только теперь можно использовать данный Фреймворк в своих проектах… все что я тут написал — это мое мнение, моя позиция, но она основана на опыте человека, который написал системы на PHP (ну и не только php), работающие на свыше 5-ти машинах как с функциональным распределением вычислений, так и с распределением вычислений по данным и прекрасно масштабируемы.

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

почему я использую свои разработки и предпочитаю изучать патерны, а не Фреймворки?

  1. знание паттернов программирования дает вам не само блюдо, а рецепт как приготовить блюдо, вы вольны использовать любые поваренные приборы: PHP JAVA С++.
  2. вы сможете добавить специи по своему выбору, если вы работаете в команде, то у вас больше шанцев изменить рецепт до приготовления, так чтоб ни у кого из членов команды не было аллергии на отдельные его части.
  3. вы можете использовать сезонные и свежие овощи! например, если только что появилась возможность использовать наймспайсы, вы их любите, то вы уже можете включить их в состав своих блюд! я очень сомневаюсь, что шеф повар вашего любимого Фреймворка обладает достаточной гибкостью чтоб сделать это.
  4. худеем — нужно меньше калорий… я думаю, что вам не зачем тащить с собой всю инфраструктуру Фреймворков просто, чтоб оно работало «как всегда» или на «всякий случай», вы же готовите!, а значит, на столе не должно быть ничего лишнего.
  5. «используйте только соевый соус» — подумайте должны ли вы так строго соблюдать рецепт?? а что если вам хочется кетчуп? отказаться от таматов? ограничения вызванные использованием готового фраймворка иногда оказываются очень серьезными и вам не нужными.

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

свои велосипеды

минусы:
  1. нет сообщества, которое обсудит ВАШУ проблемму
  2. велика вероятность «глупых» ошибок
  3. вы варитесь в собственном соку — не знаете новых методов если всегда все делаете сами
  4. Сложно предать проект другим людям
Плюсы:
  1. вы имеете полную свободу выбора, все что вы делаете вы можете сделать как вам угодно
  2. в любом месте вы можете вставить новое решение и будете знать как это изменит вашу систему
  3. вы можете решить любую проблему! вы автор системы, вам подвластны решения
  4. все органичения вам подвластны


в итоге вы рискуете, но вы гарантированы от того чтоб зайти в тупик, а с Фреймворком (особенно большим вы не гарантированны)

PS: первый топик на хабрахабре, все стеснялся как-то… но тут задело… много эту тему обсуждал с приятелями. -)
PPS: я совершенно не осветил тут тему о библиотеках (тех что решают УЗКИЕ ЗАДАЧИ одним методом) — их я наоборот люблю, об этом я напишу отдельно.
Tags:
Hubs:
+38
Comments 87
Comments Comments 87

Articles