xaml-coding-guidelines icon indicating copy to clipboard operation
xaml-coding-guidelines copied to clipboard

XA1003 - Use a logical grouped order instead of an alphabetical order.

Open cmaneu opened this issue 10 years ago • 2 comments

The alphabetical order is quick and simple. However, it can leads to harder reading when the number of attributes is important. For example, FontSize and TextAlignment have a close relationship, but can be few attributes (lines) away.

Here are the different groups, and their ordering, proposed.

  • x:Key and x:Name
  • Attached properties
  • Positionning (HorizontalAlignment, VerticalAlignment, margins, z-order, stretch Canvas., Grid.)
  • Box model (width, height)
  • Typography (Font*, Foreground if text item, Text, Content)
  • Visual (background, fill, foreground , borderbrush, borderthickness, Stroke, StrokeThickness opacity, visibility, style)
  • Misc
  • Event handlers

Pros:

  • Code is ordered in a meaningful way,
  • Related attributes are grouped.

Cons:

  • Difficult to maintain without tolling support

Questions:

  • How to handle custom controls attributes ? If you are using a vendor control suite (like Telerik or Infragistics), you may have a ton of "misc" attributes.

Your feedback is welcome.

cmaneu avatar May 12 '14 14:05 cmaneu

A plugin exists to get a slightly different result. https://github.com/nicovermeir/xamlstyler

cmaneu avatar May 12 '14 15:05 cmaneu

I agreed, sorting can be tricky to read. Grouping is more logical, ie : I always group Width and Height together. To automatise the process with a plugin, you need a configuration where you store grouped attributes. Every time a new attribute is encountered, it is added in the configuration file in a "unsorted" group. A UI allowing the user the move attributes between groups.

tbayart avatar May 14 '14 11:05 tbayart