2. 2
Learn, ask questions, access reusable apps,
share ideas, and connect with other
OutSystems developers around the world.
Bookmark outsystems.com/community
usergroups.outsystems.com
outsyste.ms/champions
outsyste.ms/mvp
OutSystems Community
4. Rules of
Engagement
🔇 - Please remain on mute during presentations
📷 - Video cameras are welcomed!
🙋 - Have a question/comment? Drop it in the Q&A!
💻- Let us know where you’re dialing from in the chat!
⏺⏺
- This meeting will be recorded and shared via email &
in User Groups
📝 - Want to provide feedback? You will receive an email
with link to provide your feedback at the end
4
10. 10
Clean Code Principles
Elegance Simple & Direct Literate Care
Clean code does one
thing well.
Clean code is simple and
direct.
Clean code can be read,
and enhanced by other
developers.
Clean code always looks
like it was written by
someone who cares.
Making the life of developers easier
image: Flaticon.com
16. Code Structure
● CRUDs folder contains the
public access for entities.
● [Entity] folder contains the
wrappers, to fill the
created/updated date/user
fields, do basic validation,
and trigger some other
actions (e.g. auditing).
● Have a separate folder for
Access Control actions.
16
17. Elements (Actions, Nodes, Parameters)
● Meaningful names.
● Use PascalCase.
● Suffix foreign keys with “Id” (e.g. “ProductId”).
● Use small letters dash separated words for css class names.
● Avoid empty labels and descriptions.
● Set the example string of Expressions.
● Pick One Word Per Concept (“get”, “fetch”, “retrieve”).
17
21. Actions
● Should do one job only.
● Should be small (~10 nodes in the main flow).
● Should have few arguments.
● Better to have one output parameter.
● Have no side effects
● Don’t leave commented code.
● Add comment only in the complex/long flows.
● Use TODO and DO it.
● Remove unused dependencies.
● Better to have an assignment node for each assignment of
different nature of logic. 21
22. Screens
● Group screens into UI flows.
● Don’t put the style at the level of widgets. Use class instead.
● Use Button Loading instead of normal Button.
● Use “If” widget instead of the “Visible” property to hide/show
content.
● Use icons for custom widgets or components.
22
23. Aggregates
● Specify the “Max. Records” when you use aggregates to return
only one record, or when you use it in a condition to check if the
result is empty.
● Use aggregates instead of SQL node.
● Call aggregates directly at the screen level (Avoid wrapping
aggregates in actions to use it in screen).
● Avoid using aggregates inside loops. Instead, use the aggregate
before the loop and use the filter action inside the loop to filter
the data.
● Define a custom structure for the SQL output.
23
24. Security
● Add a role check in every public action.
● Avoid anonymous screens.
● Has separate roles for each application.
● Define reusable client actions to check the role in JS node.
24
35. Zer0hunger Digital
Samaritan
A solution to connect people who wanted to
help those that need help
By:
Sharizal Shaarani - Director CoFounder @ Zer0hunger
Aaron Holesgrove - Engagement Manager @ PhoenixDX
John Salamat - Technical Lead @ PhoenixDX
Tom Good - OutSystems Developer @ PhoenixDX
Rules of Engagement
Throughout the presentation, please remain on mute during presentations to avoid any interruptions for our speakers
Since this is a virtual OutSystems User Groups, we still want to provide an environment of connecting and learning from fellow OutSystems colleagues!
Please feel free to turn on your webcams and backgrounds to get to know your OutSystems community
Drop where you’re joining us from, we have OutSystems users joining us from all over the world! :)
If you have any questions throughout the meeting, please feel free to drop them in the chat box below.
If you are unable to stay on for the entire duration, no worries! Today’s User Group meeting is recorded and will be shared! Check out the link and become a member to receive the recording AND hear about upcoming User Group meetings!