W technologii Salesforce pracuję już niemal 2 lata. Przez ten czas próbowałem znaleźć dla siebie idealne środowisko programistyczne, jednak, jak to w życiu bywa, nie jest to proste zadanie.
Do wyboru mamy kilka ciekawych produktów, te o największych możliwościach są płatne. Salesforce co prawda od jakiegoś czasu aktywnie rozwija swoje narzędzia, jednak do tej pory brakuje w nich wielu podstawowych funkcjonalności. Druga sprawa to to, że skupiają się one głównie na DX, co w przypadku dużych projektów, które powstały przed DXem jest powodem, dla którego ciężko się w tym środowisku pracuje. Zacznijmy jednak od podstaw... Developer Console.
Dostępna na platformie właściwie od samego początku. Pozwala na wiele ale ma też swoje ograniczenia, np. nie ma pełnego IntelliSense oraz nie wspiera nowej technologii Lightning Web Components.
Więc do czego właściwie potrzebujemy owej konsoli? Np. do szybkiej zmiany w klasie lub wykonania zapytania SOQL lub uruchomienia skryptu Anonymous Apex. (np. wywołanie batcha lub jakieś metody). Nadaje się więc idealnie do prostych i szybkich rozwiązań.
Najnowsze dziecko Salesforce, którego celem jest zastąpić poprzednie projekty (wtyczki bazujące na Eclipse - ciągle działające). Widać, że projekt ten bardzo aktywnie się rozwija. Sam VSCode jest bardzo dobrym narzędziem (Microsoft wkłada w niego na prawdę wiele pracy) jednak jako IDE nie do końca sprawdza się idealnie.
Salesforce w swoich dodatkach stawia na Language Server, dodatkowo jako jedyny w pełni wspiera technologię LWC. Niestety w tym rozwiązaniu jest duży nacisk na DXa, co przy projektach klasycznych jest problematyczne. Można co prawda importować wszystkie metadane z orga i pracować na klasycznym deployu (metadata api) jednak struktura jest konwertowana do DXa (source). Pracujemy więc podobnie jak w DX z tą różnicą że przy deployu metadanych na orga są one z powrotem konwertowane. Powoduje to duże niedogodności. Co prawda jakiś czas temu udostępniono opcję nazwaną "Develop against any org" - ma to wyeliminować powyższe problemy w klasycznym podejściu do metadancyh. Natomiast jest jeszcze drugi problem. Z tego co zauważyłem to nadal brakuje podpowiadania składni lub wtyczka źle dobiera słowa kluczowe, brakuje również podpowiedzi do zapytań SOQL.
Ogólnie rozwiązanie to zyskuje na popularności, sam Salesforce zaleca używanie swojej wtyczki. Niezaprzeczalną zaletą jest to, że rozwiązanie to jest darmowe, szybkie oraz w pełni wspiera LWC, co w przypadku np. IntelliJ + IC nie jest takie oczywiste (wersja Community IntelliJ nie wspiera JSa - sic!).
Kolejny zestaw, który bazuje na VSCode. W przeciwieństwie do poprzednika ta wtyczka rozwijana jest z przeznaczeniem do klasycznych orgów i metadanych i jest forkiem wtyczki o tej samej nazwie, którą poprzedni autor porzucił. Nie testowałem jej zbyt długo gdyż pojawiły się problemy z prawidłowym wspieraniem wbudowanych obiektów (np. Order nie był rozpoznawany).
Wtyczka ma problemy z IntelliSense, gdyż korzysta z tego samego Language Servera co rozwiązanie Salesforcea. Dodatkowo przy dużych klasach utils strasznie spowalnia.
Całkiem fajne IDE bazujące na Visual Studio (nie Code). Testowałem przez 30 dniowego free triala. Osobiście miałem spore problemy z przestawieniem się na VS i jego skróty klawiszowe. Natomiast ilość i mnogość opcji oraz możliwości zawstydza wszystkie inne IDE/wtyczki. Polecam zajrzeć na oficjalną stronę. Z wad jakie napotkałem to to, że projekt należy pobrać z orga, nie można użyć już istniejącego repozytorium.
Jest to rozwiązanie, z którego obecnie korzystam. Sprawdza się zarówno w DXach jak i klasycznych projektach. Ma pełne IntelliSense, podpowiada pola i obiekty w SOQLach oraz ma masę innych ciekawych rozwiązań.
Jego wadą jest jednak to, że nie wspiera edycji JSa (tzn. wersja Community ma ograniczone możliwości... prawie do zera), co przy projektach z LWC może być wielkim blokerem. O ile IntelliJ w wersji Community jest darmowe o tyle sama wtyczka już nie. Mimo wszystko polecam spróbować. Autor wypuszcza regularne updaty, a sama wtyczka jest ciągle rozwijana. Illuminated Cloud można również łączyć z WebStormem (niestety płatnym produktem JetBrains) co rozwiązuje problemy z obsługą JSa.
Rozwiązanie podobne do powyższego, swego czasu myślałem, że to jakaś podróba Illuminated Could. Początkowo wtyczka była darmowa i oferowała niemal te same możliwości co IC. Niestety obecnie trzeba za nią zapłacić, jednak jest w modelu - płacisz raz, korzystasz ile chcesz. Posiada 30 dniowy trial co pozwala zapoznać się z jej możliwościami. Uważam, że pod względem funkcjonalności nie odbiega znacząco od IC. Jedyna rzecz która mnie początkowo odrzucała to brak pełnego kolorowania składni.