I love SuiteScript 2.0, and 2.1 moreso, but the design of the API can lead to some extremely repetitious, verbose code, e.g. :
While I love that records provide a fluent interface, which lets us chain methods and avoid repeating the variable name, there’s still a little left to be desired from the duplicated method calls (setValue
, setValue
, setValue
, …). The problem gets magnified when you’re calling one of the more verbose methods over and over:
Luckily, plain old JavaScript Arrays give us a lovely way of reducing our repetition and condensing this kind of code block. For all the fields we want to set, we construct an Array of the parameter Objects, and then use the Array’s forEach method to invoke our setValue
on each Object:
In 2.0, the only difference is:
.forEach(function (f) { rec.setValue(f); })
In theory, we should be able to say
.forEach(rec.setValue)
without the full function expression, but it seems that NetSuite doesn’t bind the context correctly to rec
and fails with an error.
The same pattern can be followed for many other common repetitious scenarios, like Search Filter/Column creation.
I’ve taken quite a liking to this pattern for condensing repeated method calls. How does it look to you?