Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4130090
  • 博文数量: 626
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 11080
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-23 13:08
文章分类

全部博文(626)

文章存档

2015年(72)

2014年(48)

2013年(506)

分类: WINDOWS

2013-10-12 10:09:11

去年,我们建立了自己的C#编码规范,我说服同事遵循我写的编码规范。或许我是一个偏执狂吧,如果我看到有人不遵守我写的编码规范,而是去修改它,我可能通宵都睡不着。


借助Visual Studio的优秀插件ReSharper,可以很轻松地按照规则对代码进行格式化。你只需按下Ctrl-E / Ctrl-C,就可以对代码文档进行格式化。ReSharper是Visual Studio必备的工具。(图1)



自Windows Phone平台发布的两年以来,我一直使用XAML语言设计用户界面。查看C#的编码习惯是很容易的,但是对于XAML,就很困难了。

下面是Windows存储网格应用项目的例子:

  1. <ListView.GroupStyle>  
  2.     <GroupStyle>  
  3.         <GroupStyle.HeaderTemplate>  
  4.             <DataTemplate>  
  5.                 <Grid Margin="7,7,0,0">  
  6.                     <Button  
  7.                         AutomationProperties.Name="Group Title"  
  8.                         Click="Header_Click"  
  9.                         Style="{StaticResource TextPrimaryButtonStyle}">  
  10.                         <StackPanel Orientation="Horizontal">  
  11.                             <TextBlock Text="{Binding Title}" Margin="3,-7,10,10" Style="{StaticResource GroupHeaderTextStyle}" />  
  12.                             <TextBlock Text="{StaticResource ChevronGlyph}" FontFamily="Segoe UI Symbol" Margin="0,-7,0,10" Style="{StaticResource GroupHeaderTextStyle}"/>  
  13.                         StackPanel>  
  14.                     Button>  
  15.                 Grid>  
  16.             DataTemplate>  
  17.         GroupStyle.HeaderTemplate>  
  18.     GroupStyle>  
  19. ListView.GroupStyle>  

首先,没有空行。其次,按钮的属性在不同的行。而对于TextBlock元素,属性却在同一行,且没有任何顺序。

在过了很长一段时间后,我编写了自己的XAML编码规范。其中一个原因是,我不喜欢使用"属性"窗口,因为它很难有一个全面的属性设置,而不是设置为默认。(图2)



我的编码规范可简述为以下5点:

1 元素之间放入空行。


不要担心空行太多,它会使代码更易读。

  1. <Grid Height="250"  
  2.       VerticalAlignment="Top">  
  3.   
  4.     <Image Source="{Binding FeatureArticle1.Thumbnail}"  
  5.            Style="{StaticResource ImageThumbnailStyle}" />  
  6.   
  7.     <StackPanel Style="{StaticResource StackPanelSummaryStyle}">  
  8.   
  9.     <TextBlock FontSize="22"  
  10.                Style="{StaticResource TextBlockAuthorStyle}"  
  11.                Text="{Binding FeatureArticle1.Author}" />  
  12.   
  13.     <TextBlock FontSize="26"  
  14.                Height="70"  
  15.                Style="{StaticResource TextBlockSummaryStyle}"  
  16.                Text="{Binding FeatureArticle1.Title}" />  
  17.   
  18.     StackPanel>  
  19.   
  20. Grid>  

但是只有Grid.ColumnDefinition和Grid.RowDefinitions例外,因为它们只有一行属性。

  1. <Grid.ColumnDefinitions>  
  2.     <ColumnDefinition Width="200" />  
  3.     <ColumnDefinition Width="200" />  
  4. Grid.ColumnDefinitions>  
  5.   
  6. <Grid.RowDefinitions>  
  7.     <RowDefinition Height="200" />  
  8.     <RowDefinition Height="140" />  
  9. Grid.RowDefinitions>  

2 每个属性放一行。


  1. <TextBlock FontWeight="Bold"  
  2.            Foreground="White"  
  3.            HorizontalAlignment="Right"  
  4.            Margin="0,0,12,0"  
  5.            Text="{Binding ArticlesCountText}"  
  6.            TextWrapping="Wrap" />  

3 属性按字母表排序。


  1. <Image Source="/Assets/Shares/NeutralImage.png"  
  2.        Height="125"  
  3.        HorizontalAlignment="Center"  
  4.        Width="125"  
  5.        Stretch="UniformToFill"  
  6.        VerticalAlignment="Center" />  

有人说,高度Height和宽度Width应该放在一起,但作者还是喜欢按字母表顺序对属性排序。作者认为这更容易检查是否有属性设置漏了。

4 把附加属性放在起始位置并以字母表顺序放置。


  1. <Button Grid.Column="1"  
  2.         Grid.Row="2"  
  3.         Command="{Binding ShowWriterCommand}"  
  4.         CommandParameter="{Binding WriterAshley}"  
  5.         Style="{StaticResource HubTileButtonStyle}" />  

5 样式的定义可以不用那么严格。


当使用Expression Blend创建样式时,作者倾向于留下更大的空间,减少限制。这样的话,会节省很多时间。

  1. <Style x:Key="GridFeatureStyle"  
  2.         TargetType="Grid">  
  3.     <Setter Property="Height"  
  4.             Value="194" />  
  5.     <Setter Property="VerticalAlignment"  
  6.             Value="Top" />  
  7.     <Setter Property="Width"  
  8.             Value="194" />  
  9. Style>  

结论


这可能并非完美的解决方案,但如果你遵循它的话,这是一个良好的开端,特别是在团队协作的时候。
阅读(2307) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~