А зачем себе так усложнять жизнь? Это все из области высшего программирования. В реале все задачи решаются очень просто - достал из базы, показал, измени, проверил, сохранил. Все это (как Generic Types) надо только для собеседований, поэтому наверное и выпилили.
Два аргумента: 1. был у нас на фирме один человек, который попытался ввести какие-то интерфейсы, наследования (и это еще основы) - код стал монструозным и тяжело поддерживаемым. Хорошо это все использовать если ты один программируешь. А если с тобой работает 10 человек, которые это не используют. В общем этого программиста "сожгли на костре" .
2. как-то был на собеседовании у java разработчиков - выжали все соки по теории. Я эти вопросы запомнил и спрашивал у java программистов которые реально работают - ответ был "да фиг его знает, все равно это не используем" и это не мешает им получать солидные бабки
1. Я написал для своего проекта класс который используется для реализации trigger dispatcher. Для фирмы в которой я сейчас работаю, расшарил немного другой вариант. Так вот на админимтративном уровне было решено внедрять именно этот паттерн. Так вот парня что сожгли на костре, отшлепайте и верните в строй И таких примеров в моей практике очень много.
Если у вас на фирме реально так все круто в плане использования различных паттернов проектирования, то я вам завидую. Мой опыт работы в большой компании говорит мне одно - если код вылазит за пределы одного контроллера (я про Salesforce) то большая часть программистов просто закопается!!! В одном солидном продукте, как-то допустили что один программист написал 3 или 4 класса зависимых наследуемых друг друга - это стало основной проблемой. Время на разобраться с этим функционалом и внести изменения увеличилось в разы и показало что большая часть "новых" программистов просто зарывалась. А еще помню один чудесный класс, который использовался в различных местах, так вот как только кто-то начинал его трогать - отваливалась большая часть всего старого.
К чему я это говорю. В большой компании с большой текучкой кадров, все эти "оптимизации кода" приводят только к одному - наступает жопа.
Полностью согласен с тем что это все не просто так придумано, все эти Generic Types и Reflection API. Когда работаешь сам, можно и не такое придумать. Но когда это бизнес - проще сделать одну страницу и один контроллер с простой GRUD логикой и потом спокойно раздавать их "новичкам" не боясь что они что-то сломают в другом месте.
ага, я как то пришел к мысли что на одном объекте должен быть только один тригер, который фактически является диспетчером: в зависимости от условий делает вызов нужного метода и никакой логике в нем самом нет.
иначе на большом проекте объект обрастает разными тригерами как ракушками, в каждом какая то логика, и все становится очень сложно.
не подскажите навскидку какие еще СФ фреймворки, паттерны, т.н. бест практики нужно знать (или хотя бы знать о существовании) СФ программисту в первую очередь?
А вот это уже проблема архитектуры - зачем писать несколько триггеров, которые друг другу мешают - затрагивают одни и те же данные.
Так архитектура на то и нужна, дабы решить или снять проблемы будущего. Рано или поздно, да появятся триггеры, которые будут мешать друг другу.
Есть великое множество паттернов, некоторые неоправданно завышают порог входа для новых разработчиков. Думаю, наиболее сбалансированным остается вариант с полным исключением логики из триггеров, придерживание принципа одного триггера на объект и вынесения всей логики в хэндлеры. Всю эту информацию можно найти и на рутрекере, где выложен курс хитростей для разработчиков на апексе
не подскажите навскидку какие еще СФ фреймворки, паттерны, т.н. бест практики нужно знать (или хотя бы знать о существовании) СФ программисту в первую очередь?
не подскажите навскидку какие еще СФ фреймворки, паттерны, т.н. бест практики нужно знать (или хотя бы знать о существовании) СФ программисту в первую очередь?
Вероятно это то, каким должен быть дизайин большого "здорового" проекта. В небольшим проектах нет глубины для разворачивания этих всех слоев. Но все большое начинается с малого. И иногда я думаю глядя на небольшой проект - если он будет развиваться, обрастать новыми и новыми компонентами - то придется много переписывать и переделывать...
Вероятно это то, каким должен быть дизайин большого "здорового" проекта. В небольшим проектах нет глубины для разворачивания этих всех слоев. Но все большое начинается с малого. И иногда я думаю глядя на небольшой проект - если он будет развиваться, обрастать новыми и новыми компонентами - то придется много переписывать и переделывать...
Для этого и придумана архитектура. Нужно изначально писать гибкие приложекния. Кто не в курсе всем советую прочитать про принцыпы S.O.L.I.D.
Вероятно это то, каким должен быть дизайин большого "здорового" проекта. В небольшим проектах нет глубины для разворачивания этих всех слоев. Но все большое начинается с малого. И иногда я думаю глядя на небольшой проект - если он будет развиваться, обрастать новыми и новыми компонентами - то придется много переписывать и переделывать...
Не важен размер разработки, если принципы не правильные на каком-то этапе приходит ощущение что проще написать что-то с нуля а не развивать существующее решение.
Не важен размер разработки, если принципы не правильные на каком-то этапе приходит ощущение что проще написать что-то с нуля а не развивать существующее решение.
Насчет архитектуры и принципов все сейчас высказались правильно, но как часто удается соблюсти эти каноны, когда, в большинстве, все нужно вчера и желательно поболее? Я не говорю, что нужно всегда говнокодить, но моя практика показывает, что все упирается в поиск разумного компромисса