• 特定场景下的命名最佳实践

    • 命名空间

    1. 要使用PascalCasing,并用点号来分隔名字空间中的各个部分。

      如Microsof.Office.PowerPoint

    2. 要用公司名作为命名空间的前缀,这样就可以避免与另外一家公司使用相同的名字。
    3. 要用稳定的,与版本无关的产品名称作为命名空间的第二层
    4. 不要使用公司的组织架构来决定命名空间的层次结构,因为内部组织结构经常改变。
    5. 不要用相同的名字来命名命名空间和该空间内的类型。

      例如,不要先将命名空间命名为Debug,然后又在该空间中提供Debug类。大部分编译器包括VS要求用户在这样的类型前加上完整的限定符。

    • 要让接口的名字以字母I开头

如IComponet,IDisposable 大家一看就知道是接口。

同时要确保如果一个类是一个接口的标准实现,那么这个类和接口应该只差一个"I"前缀。

  • 派生类的末尾使用基类名称

例如,从 Stream 继承的 Framework 类型以 Stream 结尾,从 Exception 继承的类型以 Exception 结尾。

  • 泛型类型参数的命名

  1. 使用描述性的名字来命名泛型类型参数,并且在前面加上T前缀

    如下面都是很好的命名

    public delegate TOutput Converter<TInput, TOutput>(TInput from);

  2. 如果只有一个类型参数,可以只用一个字母T来表示泛型

    public class Nullable<T>

    public class List<T>

  3. 如果泛型参数有约束,那么需要在泛型类型参数名中需要显示出该约束

    public interface ISessionChannel<TSession> where TSession:ISession

  • 枚举类型的命名

  1. 要用单数名词而不是复数命名枚举类型,如要用ConsoleColor而不是ConsoleColors

    public enum ConsoleColor

    {

    Red,

    Yellow,

    Blue

    }

  2. 不要给枚举类型加"Enum"、"Flag"等后缀。

    ColorEnum,ColorFlag都不好,因为本身就是枚举,再加上就是没有意义的重复 。

  • 要用动词和动词短语命名方法

  • 属性的命名

  1. 要用名词、名词短语或形容词来命名属性
  2. 要用描述集合中具体内容的短语的复数形式来命名属性集合,而不要用短语的单数形式加"List"、"Array"或"Collection"后缀

    class BinaryTree

    {

    //Good Naming

    public NodeCollection Nodes { get; set; }

    //Bad Naming

    public NodeCollection NodesCollection { get; set; }

  3. 要用肯定性的短语命名布尔属性。最好在前面选择性的加入"Is"、"Can"、"Has"等前缀。

    CanSeek比CantSeek和Seekable都更准确和容易理解。

  • 事件的命名

  1. 要用动词或动词短语命名事件

    如: Clicked、Painting、DroppedDown 等等

  2. 要用现在进行时(ing)和过去式(ed)来赋予事件发生之前和之后的概念。而不是使用Before和After.

    如窗口关闭前发生的close事件应该命名为Closing,而在窗口关闭之后发生的应该命名为Closed.

  • 字段的命名

    1. 禁止使用实例的公有字段和受保护字段,请使用属性代替。

    Tips:在VisualStudio中输入"prop"可快速创建外部可修改的属性,输入"propg"可快速创建不允许外部修改的属性。如:

//propg

public int NodesCount { get; private set; }

//prop

public List<BinaryNode> Nodes { get; set; }

  1. 一般只使用静态字段
  2. 要使用名词、名词短语或形容词命名字段
  3. 不要给字段加前缀如"g_"、"s_"来表示静态字段。因为字段和属性是非常相似的,所以要遵循相同的命名规范。

自己总结的C#编码规范--3.特定场景下的命名最佳实践的更多相关文章

  1. 《C+编程规范 101条规则、准则与最佳实践》笔记

    <C+编程规范 101条规则.准则与最佳实践> 0.不要拘泥于小节(了解哪些东西不应该标准化) * 与组织内现有编码规范一致即可 * 包括但不限于: - 缩进 - 行长度 - 命名规范 - ...

  2. Java基础学习总结(92)——Java编码规范之排版、注释及命名

    为使开发人员养成良好的开发习惯,编写可读性强.易维护的程序,结合以往资料,现整理Java编码规范,将之作为开发人员的参照依据. 一.排版 1.相对独立的程序块之间必须加空行 下列情况应该使用一个空行: ...

  3. 特定场景下Ajax技术的使用

    ajax介绍 jax技术包含了几种技术:javascript.xml.css.xstl.dom.xhtml和XMLHttpRequest七种技术,所以ajax就像是粘合剂把七种技术整合到一起,从而发挥 ...

  4. 特定场景下SQL的优化

    1.大表的数据修改最好分批处理. 1000万行的记录表中删除更新100万行记录,一次只删除或更新5000行数据.每批处理完成后,暂停几秒中,进行同步处理. 2.如何修改大表的表结构. 对表的列的字段类 ...

  5. 特定场景下的PLC 远程控制和数据读取

    最近有位博友提出了一种应用场景,根据工作中实际遇到的类似的产品应用场景,记录下自己的解决方案. 场景: 需要在云端控制和采集各个站点的PLC数据.各个站点是分散的,每个站点有公网访问能力,但是分散站点 ...

  6. 这套C#编码规范写不错

    自己总结的C#编码规范--1.命名约定篇:http://www.cnblogs.com/luzhihua55/p/CodingConventions1.html 自己总结的C#编码规范--2.命名选择 ...

  7. 自己总结的C#编码规范--7.文档下载 & 总结

    今天终于把这一系列的编码规范写完了,这个编码规范算上前面阅读相关书籍,前前后后总共花了一个月的时间,也算是个人的呕心沥血之作了. 本来也没打算把这个系列写的这么长,但是在写的过程中自己搜了相关的网上资 ...

  8. 自己总结的C#编码规范--前言&目录

    最近在为公司编写c#编码规范,以前对这方面研究不多,只是觉得代码能够出自己的意思就可以了. 我参考了以下资料 C# Coding Conventions NET设计规范约定惯用法与模式(第2版) 编写 ...

  9. 【原】JAVA SE编码规范

    /* * 编码规范: * 1.所有的命名遵循"见名知意"的原则 * 2.所有的命名不允许使用汉字或拼音 * 3.Java的工程命名建议使用小写,比如:oa.crm.cms... * ...

随机推荐

  1. git push -u 用法

    在我们第一次提交git的时候: 发现上面用了这个-u参数,也没作解释,特意搜索了下这个-u的用法,加了参数-u后,以后即可直接用git push 代替git push origin master gi ...

  2. vue指令问题

    挂载点:最外层标签就是vue实例的挂载点,即id或者类对应的 dom节点 模板:指挂载点内部的内容,在实例里使用template标签来构 建 h1标签放在body里面不使用 “template”是一样 ...

  3. Google C++ 代码规范

    Google C++ Style Guide   Table of Contents Header Files Self-contained Headers The #define Guard For ...

  4. 论文阅读笔记二十四:Rich feature hierarchies for accurate object detection and semantic segmentation Tech report(R-CNN CVPR2014)

    论文源址:http://www.cs.berkeley.edu/~rbg/#girshick2014rcnn 摘要 在PASCAL VOC数据集上,最好的方法的思路是将低级信息与较高层次的上下文信息进 ...

  5. 快速部署网络爬虫框架scrapy

    1. 安装Anaconda,因为Anaconda基本把所有需要依赖的环境都一键帮我们部署好了,不需要再操心其他事了,进官网选择需要下载的版本:https://www.anaconda.com/down ...

  6. NEST - 编写查询

    Writing queries Version:5.x 英文原文地址:Writing queries 将数据索引到了 Elasticsearch 之后,就可以准备搜索它们了.Elasticsearch ...

  7. centos 6.8 安装git 报错

    报错信息: Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl               ...

  8. ui-router实现返回上一页功能

    angular.module('ConsoleUIApp', ['ui.router','ui.bootstrap']) .config(function ($stateProvider, $urlR ...

  9. You have new mail in /var/spool/mail/root消除提示的方法

    有时在进入系统的时候经常提示You have new mail in /var/spool/mail/root 你觉得烦人---解决方法: 修改系统配置文件/etc/profile,告诉系统不要去检查 ...

  10. Python题目练习(一)

    1.使用while循环输入 1 2 3 4 5 6  8 9 10 i = 1 while i <=10 : if i != 7: print(i) else: print(' ') i += ...