Salesforce - довольно болезненный опыт для разработки чего угодно, кроме самых простых приложений. У Salesforce есть очень конкретное представление о том, что нужно разрабатывать, и если ваше приложение не соответствует этим границам, держитесь подальше!
Ограничения регулятора действительно очень жалкие: 16 уровней рекурсии, куча 1 мегабайта, не более 200 объектов, возвращаемых из запроса, не более 20 запросов за один вызов. 10 веб-выносок в одном вызове, 1000 элементов в одном списке, и они продолжаются. Конечным результатом является то, что любой ум, который вы придумаете, чтобы обойти один предел, идет вразрез с другим.
Как только вы достигнете определенного размера, все ваше время будет потрачено на программирование в обход этих ограничений. Язык, Apex, на самом деле не поддерживает никакого значимого наследования. Даже на первый взгляд простые задачи заканчиваются днями, когда сталкиваются с новыми и явно произвольными ограничениями, например, все объекты в Apex наследуются от SObject
; тем не менее, не разрешается создавать коллекцию универсальных SObject
s, что делает практически невозможным создание полезных служебных библиотек. Сложные (даже довольно простые) объединения баз данных невозможны.
Инструменты и поддержка Salesforce также крайне слабы. Они ненадежны и сложны в использовании для реальных процессов разработки. Развертывание - это кошмар, так как инструментам очень трудно решать сложные проблемы с зависимостями, и многочисленные объекты, которые будут созданы в ходе обычной разработки, просто НЕ МОГУТ быть развернуты программно. Другие мелкие функции также восхитительны, например, тот факт, что язык нечувствителен к регистру, но IDE чувствителен к регистру. Нет никаких инструментов рефакторинга, о которых можно говорить, поэтому вы получаете всю боль от статически типизированного языка, без каких-либо предполагаемых преимуществ. И время сохранения / компиляции велико - я вижу частоту более 2 минут. И, конечно, если у вас есть несколько ошибок компиляции в одном сохранении (и вы будете, так как вы не захотите перекомпилировать каждое изменение с этими 2-минутными ожиданиями ...), вы получите только одну ошибку за раз !
В связанной заметке вы, похоже, заметили, что документация Salesforce довольно самодовольна - ну, это как раз ВСЕ вниз. Нет нигде упоминания даже в самых глубоких технических ссылках на распространенные ошибки или даже на ограничения данного API или функции. Это все «вот что ты можешь сделать», и не упоминать о нем, «но ты бы мог подумать, что это тоже будет ___, но ты ошибаешься! Документация действительно похожа на маркетинговый материал. Я программирую в этой среде уже 18 с лишним месяцев, и до сих пор иногда трудно найти основы, такие как справочник по API.
Salesforce не является гибкой средой. Это не среда быстрой разработки (по крайней мере, по сравнению с любой другой платформой веб-программирования). Это плохая среда для создания чего-либо, кроме игрушечных приложений, подобных тем, которые они показывают в своих уроках. Просто скажи нет.