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