вообще это копипаст ответа на топик:PHP > Хватит изобретать велосипеды!
вынес я его в пост, потому что тут выражена частично противоположная позиция, и решил что можем о этом поговорить. я предпочитаю изучать патерны а не готовые фраймворки и если использовать готовые решения, то узко направленные либы, а не всеобемлющие монстры.
Я тим лидер команды проекта incomeproject.com (это большая площадка для создания партнерских программ), могу сказать, что использование сторонних библиотек осложнено как минимум по таким причинам:чтобы использовать такую библиотеку в серьезном проекте ей нужно полностью доверять, чтобы ей доверять ее надо изучить и обкатать на каком-либо «не важном» проекте, таких обычно нет.
нужно полностью понимать область применения, условия работы Фреймворка, методологию решения проблем, которую он предлагает. если этого нет, то вы рано или поздно встанете в ситуацию когда Фреймворк не удовлетворяет ваших требований и нужно писать «костыль» тут то вы и попадете в ловушку когда нужно ставить еще и еще костыли. поставить костыль корректно (под нужным углом) и не нарушить логической целостности работы приложения основанной на FW вы все равно можете только в случае если понимаете идеологию решения задачи, которая заложена в Фреймворк.
Таким образом что б начать пользовать Фреймворк вам нужно:
доверие к С++, С и Java обусловлено вовсе не одним фактом бренда, который за ними стоит, хотя и им тоже, но еще и старостью технологии Java`е тока не давно Sun сделал NetBeens на приемлемом уровне, а до этого так же были склады решений и все рылись в них, достаточно вспомнить эпопею с аспектным программированием.
это только общие замечания, есть частные, например, вы знаете, что в вашем случае контекст задачи подразумевает упрощение какого — либо механизма, в рамках фрайм ворка это упрощение (логики, абстракций, производительности) обычно сложно сделать, но на вашей кухне вы можете себе позволить это.я выделяю такие плюсы/минусы:
в итоге вы рискуете, но вы гарантированы от того чтоб зайти в тупик, а с Фреймворком (особенно большим вы не гарантированны)
PS: первый топик на хабрахабре, все стеснялся как-то… но тут задело… много эту тему обсуждал с приятелями. -)
PPS: я совершенно не осветил тут тему о библиотеках (тех что решают УЗКИЕ ЗАДАЧИ одним методом) — их я наоборот люблю, об этом я напишу отдельно.
вынес я его в пост, потому что тут выражена частично противоположная позиция, и решил что можем о этом поговорить. я предпочитаю изучать патерны а не готовые фраймворки и если использовать готовые решения, то узко направленные либы, а не всеобемлющие монстры.
Я тим лидер команды проекта incomeproject.com (это большая площадка для создания партнерских программ), могу сказать, что использование сторонних библиотек осложнено как минимум по таким причинам:чтобы использовать такую библиотеку в серьезном проекте ей нужно полностью доверять, чтобы ей доверять ее надо изучить и обкатать на каком-либо «не важном» проекте, таких обычно нет.
нужно полностью понимать область применения, условия работы Фреймворка, методологию решения проблем, которую он предлагает. если этого нет, то вы рано или поздно встанете в ситуацию когда Фреймворк не удовлетворяет ваших требований и нужно писать «костыль» тут то вы и попадете в ловушку когда нужно ставить еще и еще костыли. поставить костыль корректно (под нужным углом) и не нарушить логической целостности работы приложения основанной на FW вы все равно можете только в случае если понимаете идеологию решения задачи, которая заложена в Фреймворк.
Таким образом что б начать пользовать Фреймворк вам нужно:
- попробовать его где либо в слабо значительном месте.
- изучить всю доку и знать типичные примеры, желательно потусовать в сообществах и узнать типичные проблемы
- понять идеалогию решения (большой Фреймворк, много авторов, а значит много разношерстных решений)
- осознать ВСЕ уровни абстракций используемых в Фреймворке.
- написать где-то долго играющий, но опять же критичный проект на этом Фреймворке.
доверие к С++, С и Java обусловлено вовсе не одним фактом бренда, который за ними стоит, хотя и им тоже, но еще и старостью технологии Java`е тока не давно Sun сделал NetBeens на приемлемом уровне, а до этого так же были склады решений и все рылись в них, достаточно вспомнить эпопею с аспектным программированием.
почему я использую свои разработки и предпочитаю изучать патерны, а не Фреймворки?
- знание паттернов программирования дает вам не само блюдо, а рецепт как приготовить блюдо, вы вольны использовать любые поваренные приборы: PHP JAVA С++.
- вы сможете добавить специи по своему выбору, если вы работаете в команде, то у вас больше шанцев изменить рецепт до приготовления, так чтоб ни у кого из членов команды не было аллергии на отдельные его части.
- вы можете использовать сезонные и свежие овощи! например, если только что появилась возможность использовать наймспайсы, вы их любите, то вы уже можете включить их в состав своих блюд! я очень сомневаюсь, что шеф повар вашего любимого Фреймворка обладает достаточной гибкостью чтоб сделать это.
- худеем — нужно меньше калорий… я думаю, что вам не зачем тащить с собой всю инфраструктуру Фреймворков просто, чтоб оно работало «как всегда» или на «всякий случай», вы же готовите!, а значит, на столе не должно быть ничего лишнего.
- «используйте только соевый соус» — подумайте должны ли вы так строго соблюдать рецепт?? а что если вам хочется кетчуп? отказаться от таматов? ограничения вызванные использованием готового фраймворка иногда оказываются очень серьезными и вам не нужными.
это только общие замечания, есть частные, например, вы знаете, что в вашем случае контекст задачи подразумевает упрощение какого — либо механизма, в рамках фрайм ворка это упрощение (логики, абстракций, производительности) обычно сложно сделать, но на вашей кухне вы можете себе позволить это.я выделяю такие плюсы/минусы:
свои велосипеды
минусы:- нет сообщества, которое обсудит ВАШУ проблемму
- велика вероятность «глупых» ошибок
- вы варитесь в собственном соку — не знаете новых методов если всегда все делаете сами
- Сложно предать проект другим людям
- вы имеете полную свободу выбора, все что вы делаете вы можете сделать как вам угодно
- в любом месте вы можете вставить новое решение и будете знать как это изменит вашу систему
- вы можете решить любую проблему! вы автор системы, вам подвластны решения
- все органичения вам подвластны
в итоге вы рискуете, но вы гарантированы от того чтоб зайти в тупик, а с Фреймворком (особенно большим вы не гарантированны)
PS: первый топик на хабрахабре, все стеснялся как-то… но тут задело… много эту тему обсуждал с приятелями. -)
PPS: я совершенно не осветил тут тему о библиотеках (тех что решают УЗКИЕ ЗАДАЧИ одним методом) — их я наоборот люблю, об этом я напишу отдельно.