Friday 21 February 2020

Xamarin Coding Standards

There are many best practices in writing Xamarin. Here are some that we’ve canonized where I work…
  •       By convention the identifier for the ViewModel is vm
  •       Do not assign more than one page to a view model. Generally speaking: it should be one page to one view model
  •     Do not pass view modes to methods of other pages
 The only code in code-behind (e.g., foo.xaml.cs) should be
  • initialize in the constructor
  • create the view model
  • assign the datacontext to the view model
  •  call the viewmodel’s Initialize method
·         Lifecycle methods such as OnAppearing and OnDisappearing

    Why: we want to keep the code behind as sparse as possible. Unit testing requires reaching into code and that is infinitely easier with a viewmodel.

Every ViewModel should have an initialize method.

    Why: Having an initialize method keeps most of the code for the vm out of the constructor. This is recommended practice by Microsoft, and allows for async methods.

Do not put Xaml in templates in App.xaml. Put the Xaml in the Xaml file.

    Why: App.xaml quickly becomes bloated and hard to work with. Having the Xaml in the Xaml file is natural and helps create the troika we want: foo.xaml, foo.xaml.cs and fooViewModel.cs.

Create viewmodel name by appending “viewmodel” to the xaml name

  • LigthController.xaml
  • LightController.xaml.cs
  • LightControllerViewModel.cs

    Why: It is far easier to find the file you want if we follow a convention.

Avoid Xaml file names ending in “view”

  • LightControllerView.xaml
  • LightControllerView.xaml.cs
  • LightControllerViewViewModel.cs

    Why: Adding view to a view file is redundant and it makes reading the name of the ViewModel more difficult.

Use commands rather than event handlers

// wrong - handled in code behind
<button Text="Divide by 2" Clicked="onClick" /> 
//correct - handled in viewmodel
<button Text="Divide by 2" ClickedCommand="{Binding DivideBy2Command"
 
Why: It is much easier to write unit tests when the event handler is in the viewmodel.

No comments:

Post a Comment

All About .NET MAUI

  What’s .NET MAUI? .NET MAUI (.NET Multi-platform App UI) is a framework for building modern, multi-platform, natively compiled iOS, Androi...

Ads2