- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
After 20some years in tech, I am officially & unexpectedly a "real dev". Here are some concepts I either learned or learned more thoroughly in my first 90 days.
βοΈ GET A CLUE (Comment Like Users Exist) βοΈ
- Learn JSDoc. Yes "real devs" argue about this. Yes I'll catchπ₯for suggesting it... but its π―% better than what 90% of us were taught.
- This video is a great introduction to JSDoc
/* AN EXAMPLE OF JSDOC USAGE FOR A FUNCTION WITHIN A SCRIPT INCLUDE */
/**
* Constrcuts an anchor tagged URL
* @param {GlideRecord} recordGR - GlideRecord of the record we want to link to. Use this to get the table name and sys_id.
* @param {string} text - anchor text for URL
* @returns - a clickable hyperlink with URL embedded in the text parameter.
*/
_buildLink: function(recordGR, text) {
var table = recordGR.getTableName();
var baseURL = gs.getProperty('glide.servlet.uri') + table + ".do?sys_id=" + recordGR.sys_id;
var textEmbeddedURL = '<a href="' + baseURL + '" target="blank">' + text + '</a>';
return textEmbeddedURL;
}
π THINK FAB (Front And Back) π
Team: "What if someone changes that to something unexpected?"
Me: "They can't, the client won't let them."
Team: "But what if it changes from the server side?"
- Learn how to harden things from both client and server side. If a human can do it, so can a script. If a human can't do it, a script still can. Assume it can happen.
πMESSAGES SHOULDN'T BE HARD (Hardcoded And Really Dumb) π
- You either work on a multi-language instance or WILL at some point.
- Even if you don't leverage multi-language, making a separate sys_ui_message record de-risks future development. Now if you need to change the message, you aren't changing the code that fires it!
- sys_ui_message / gs.getMessage() allow message translation into other languages. sys_ui_message stores the language versions. getMessage figures out which one to use.
- Learn to parameterize your messages: "{0} was closed by {1}" can be called with gs.getMessage("messageKey", [inc.number, inc.closed_by]);
/* TRY IT YOURSELF!
- Create a sys_ui_message called "myFirstMessage". Use whatever language is local to you.
- Make hte message body "{0} is priority {1}"
- Run the following code in Background scripts
- How many parameters can you have? I tried one with 20, so PLENTY!
*/
var incGR = new GlideRecord('incident');
incGR.setLimit(1);
incGR.query();
while (incGR.next()){
gs.info(gs.getMessage("myFirstMessage", [incGR.number, incGR.priority]));
}
π© CRAP! - CATASTROPHIC RESULTS *ALWAYS* POSSIBLE π©
Them: "But what happens if this doesn't return anything?"
Me: "It should return something."
Them: "But what if it doesn't?"
- Learn how to use try/catch to either keep processing gracefully, OR send important messages to troubleshooters.
- A truly excellent article article demonstrating this by @Trey Carroll
π§ DON'T BE LAME (Logic And Methods Everywhere)
- 2x true for those maximizing Flow Designer / Playbooks. Sometimes you NEED code. Think about *where* best to execute it.
- Learn to use Script Includes and treat them like function libraries. "My flow needs code to generate a complex work_note" -> Put that logic in a Script Include function and call it from flow.
- Every function you desire, imagine how it might be re-used.
WANT MORE HELP BUILDING ON SERVICENOW?
βΆοΈ Robert "The Duke" Fedoruk on YouTube
ποΈ CJ & The Duke podcast
- 2,801 Views
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.