A while ago, I wrote an article about SharePoint best practices, and I think it’s a good time to start one for Power Apps. Like in my SharePoint article, a few disclaimers first.
Everything contained in this article is my personal opinion, so feel free to disagree and adapt any of them to your needs.
The point is not to have a standard that everyone will use, but for you to think and implement one that makes sense to your reality. I will improve it over time, so feel free to contact me and propose topics that are missing. Finally, this article can change over time since I’ll learn new stuff over time, so feel free to interact on Twitter or send me an email with suggestions, or come back once in a while because there may be something new. Will all these disclaimers out of the way, let’s get started.
Variables
Variables exist in every programming language that you can remember, so Power Apps are not the exception. Not that I’m saying that Power Apps is a programming language per se, and, although it’s in the family of “Low Code” applications, there are places here and there where you can include formulas and some minor code.Best Practices
Variables in Power Apps should follow the same rules as in every programming language. They need to be:- Descriptive. You should be able to understand by looking at the name; what’s it’s purpose.
- Unique. You should be able to identify your application.
- Don’t have the same name as other structures in the system. For example, you should not call your variable “max” because it’s a function name.
Recommendations
There’s more, but these are the most important. But let me add a few tips:- Never sacrifice the length of the variable in place of understanding what it does. For example, “maxPax” we can understand it’s the maximum people, but of what? There’s no context. “Pax” can also not be apparent for everyone. Why not call the variable “maxNumberOfPeopleInvited.” It’s a bit longer, but it reads quite clearly. It’s the max number of people invited. Much more context than the previous case.
- Don’t start with numbers or special characters. Some programming languages support them (Swift even supports emoji for the names of the variables), but that’s not a reason you should do it. Variables should represent entities, and rarely you’ll need to define it with a number.
- Use “camelCase” when naming them. Again, some people prefer to use underscores, but the camel case makes things, in my option, much more cleaner. Besides, most languages use the camel case as the “recommended” strategy, so it’s good to go with the majority in this case.
- Singular form for unique values, for example, a “Text” value. Use the pluralized version if the variable contains a list of items. Then you’ll know by looking at the variable that it has one or more values.
- Lower case always. Use upper case for collections and data sources.
- Don’t use any prefix to identify if it’s a local or global variable (Microsoft recommends this). Keep things simple and, if the variable is descriptive enough, you don’t need any prefix.
Controls
If you build a Power App, you’ll probably use hundreds of controls. They are the building blocks of your whole application, but since you’re using them a lot, following some rules is imperative so that you don’t get lost in your app.Abbreviations
It’s common practice to use abbreviations to understand what’s the control purpose. For example, you can name your controller “imgLogo” if you want to represent an image of the logo of your company. Microsoft recommends using them and has a list of accepted abbreviations. I’m not going to list them here, but if you want, please check the best practices document, and you’ll find them. I can’t say I agree with the usage of abbreviations. I don’t like to introduce steps where people have to learn the language so that they can understand something. Languages are complex enough so let’s not make them more complicated. Like I mentioned before, don’t sacrifice the length of the variable in place of understanding what it does, and this is perfect. There’s no shame in having big variable names as long as they prevent people from having to check what “can” means, for example (it’s “canvas” by the way). Please call it “canvas” and remove unnecessary entropy.Best Practices
They should follow the same structure as variables. In my opinion, they are entirely analogous, although they serve different purposes.Screens
Screens are where you use your controls. They contain a lot of them, but each application is expected not to have many screens.Recommendations
In this case, I agree with Microsoft when recommending that they are descriptive, using plain language and spaces. Some examples can be “Main Screen,” “Login Screen,” or “Personal Information Screen.” The only thing that I leave up to you is to add “Screen” at the end of the name. Personally, it’s obvious it’s a screen, but if you want to make it extra descriptive, I have nothing against it. But don’t:- Use abbreviations
- Camel or Pascal case
- Start with the word “Screen.”
Data Sources
Almost all Power Apps use Data Sources to store and retrieve information to display the user. There are hundreds of potential data sources, but all of them inherit the name from the source. For example, if you’re using a SharePoint data source and connecting to a “Person” list, then the data source will be called “Person.” It’s imperative that the source also follows the rules in naming their objects. In SharePoint’s case, I wrote an article so that you can “just” import the data sources, and all of them will have the names correctly formatted.Best Practices
We touched in the variables section, but they should:- Name them based on Pascal Case and always in the plural form. All of them contain multiple records, so you know that you’re using a list of something.
- I know there’s the temptation to use prefix or suffix to identify that it’s a data source. Don’t do it. As long as it’s uppercase, you know it’s a data source.
- Power Apps will remove spaces, but if there are some underscores, remove them also, unless they are essential to understand the data source’s objective.
No comments yet
Be the first to share your thoughts on this article!