Here are Tips & Tricks that I’ve found useful in Apex.
Get Salesforce Record Ids
There are times when you need to get the set of record ids from a list of SObject records. An easy way to get them is to loop over them and collect them like so:
An easier way using a map:
Request / Response Pattern
The request / response pattern refers to using a “Request” Parameter Object for an apex method’s input and a “Response” Parameter object for what is returned.
Benefits
- In managed packages, a global method can’t have its signature changed once the package is released. Additional input or output in newer versions is fairly common so adding new request or response fields is how one can get around having to create additional global methods.
- No method overloads are needed.
Apex Can Invoke Salesforce APIs
While counter-intuitive, apex can be used to invoke the Salesforce APIs such as the Metadata, Bulk, Partner or Enterprise APIs. This is helpful when you want to stay on the Salesforce platform without having to manage servers and infrastructure off of it.
See Calling Salesforce Web Services Using Apex as an example.
Interfaces Can Extend Interfaces
While Apex started as a scripting language, it evolved into a feature rich, object-oriented language. While used infrequently, one can have an interface extend another interface. This has been helpful in managed packages where new methods are needed on an existing interface. A new interface is created that extends the old one and then used where needed.
Enums
It seems that apex developers often forget that Apex has Enums enumerated values. As a result, it’s fairly common to see code where a string variable is assigned various values and then checked against different values.
Whenever possible, I prefer enums.
What Apex tips and tricks do you have?
Happy Coding,
Luke
For the two solutions for getting SObject record IDs, it would be interesting to see which one is the most efficient given a list of 1,000 or even 10,000, 50,000 records. Using the map is definitely easier, and I would assume is also the most efficient (but I’ve never done a test on this myself).
Bobby,
Thanks for the comment. To see how the results of profiling the different methods, take a look at my follow-up post: https://metillium.com/2016/06/apex-profiling-collecting-set-from-list/