It's that debugging later can be tricky. So you have to picky at the source. How anal you want to be is up to you. e.g. If your replacing the defconf, one error in a script, and the router won't work.
For example on scripting pickyness, you'll note the need parse the prefix part using :find and :pick above. Yet someone might think this would work using just a ":toip", after all you're fetch an /ip/address's address field:
:put [:toip [/ip/addresss/get ([find]->0) address]
BUT the gets you a
nil type. e.g.
:put [:typeof [:toip [/ip/address/get ([find]->0) address]]]
nil
# with out the :toip, it's a string
:put [:typeof [/ip/address/get ([find]->0) address]]
str
SEE... [:toip] doesn't deal with ip-prefix type (or strings that look like ip-prefix type) – it's just how :toip works. And might be difficult to figure out if :do () on-error={} was used. While an :if () do={} right below, you'd at least know the line that was a problem...
Now if you have a relatively fixed config, then "shortcutting" some checks may be totally fine. e.g. you know there is only one IP address & no one is going to rename interfaces – but then there should be no need for on-error={} either if that's true
.