• 软件开发编码规范


    软件开发编码规范

     1 基本要求

    1.1 程序结构要求

    ü 程序结构清晰,简单易懂,单个函数的程序行数不得超过100行。

    ü 打算干什么,要简单,直截了当,代码精简,避免垃圾程序。

    ü 尽量使用.NET库函数和公共函数(无特殊情况不要使用外部方法调用windows的核心动态链接库)。

    ü 不要随意定义全局变量,尽量使用局部变量。

    1.2 可读性要求

    ü 可读性第一,效率第二

    ü 保持注释与代码完全一致

    ü 每个源程序文件必须添加文件头注释说明,说明规格见规范

    ü 每个方法必须添加函数头注释说明,说明规格见规范

    ü 定义类、接口、枚举、结构、委托等类型时,必须添加注释说明

    ü 定义常量、变量、属性、事件等对象时,必须添加注释说明

    ü 处理过程的每个阶段应该添加相关的注释说明

    ü 在典型算法前必须添加注释说明

    ü 一目了然的语句不添加注释说明

    ü 循环、分支层次不要超过五层

    ü 利用缩进来显示程序的逻辑结构,缩进以Tab键为单位

    1.3 结构化要求

    ü 禁止出现两条等价的支路

    ü 禁止GOTO语句

    ü 用if语句来强调只执行两组语句中的一组,禁止else goto 和 else return

    ü 用case实现多路分支。

    ü 避免从循环引出多个出口。

    ü 函数只有一个出口

    ü 不使用条件赋值语句

    ü 避免不必要的分支

    ü 不要轻易用条件分支去替换逻辑表达式 

    1.4 正确性与容错性要求

    ü 程序首先是正确,其次是优美

    ü 无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查

    ü 改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响

    ü 所有变量在调用前必须被初始化

    ü 对所有的用户输入,必须进行合法性检查

    ü 不要比较浮点数的相等,如: 10.0 * 0.1 == 1.0 , 不可靠

    ü 程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等,对于明确的错误,要有明确的容错代码提示用户

    ü 尽量使用规范的容错语句

      例如:

    try

    {

    }

    catch

    {

    }

    finally

    {

    }

    1.5 可重用性要求

    1.5.1 重复使用的完成相对独立功能的算法或代码应抽象为asp.net服务或类。

    1.5.2 asp.net服务或类应考虑OO思想,减少外界联系,考虑独立性或封装性。

     

     

    2 C#编程规范

    2.1 适用范围

    本标准适用于利用Visual C# 其余语言作参考.。

    2.2 命名

    1) 常量命名

    下表描述了不同类型标识符的大小写规则:

    标识符

    大小写

    示例

     

    命名空间

    Pascal

    namespace Com.Techstar.ProductionCenter

     

    Pascal

    public class DevsList

     

    接口

    Pascal

    public interface ITableModel

     

    方法

    Pascal

    public void UpdateData()

     

    属性

    Pascal

    Public int Length{}

     

    事件

    Pascal

    public event EventHandler Changed;

     

    字段

    Camel

    private string fieldName;

     

    枚举值

    Pascal

    FileMode{Append}

     

    参数

    Camel

    public void UpdateData(string fieldName)

     

    局部变量

    Camel

    string fieldName;

     

    ´ 避免使用缩写,如果一定要使用,就谨慎使用。同时,应该保留一个标准缩写的列表,并且在使用时保持一致。

     

    ü 常量命名必须具有一定的实际意义

    ü 常量命名必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,并添加简单的注释,说明其作用

    ü 常数以表明常数意义的名词命名,一般不区分常数的类型:

    const single DefaultConcentration = 0.01 

    2) 变量命名

    ü 普通类型的变量,使用有意义的名字命名

    不可使用简称和无意义的名称诸如Ax1 

    int index;

    string customerName;

     

    ü 类的私有数据成员变量命名以m_开始

    Private int m_Index;

     

    ü 方法内部的私有变量命名以小写字母开始,多个单词组合出来的变量,则首单词首字母小写,后面的单词首字母均大写.

    int index;

    string customerName;

    ü 特殊情况可以考虑一个字母的变量:

    Graphic g;

    3) 类型命名 

    ü 类

    class声明的类,都必须以名词或名词短语命名,体现类的作用。如: class Indicator 当类是一个特性(Attribute)时,以Attribute结尾,当类是一个异常(Exception)时,以Exception结尾: 

    class ColorSetException;

    class CauseExceptionAttribute;

    当类只需有一个对象实例(全局对象,比如Application等),必须以Class结尾,如:

    class ScreenClass

    class SystemClass

    当类只用于作为其他类的基类,根据情况,以Base结尾: 

    class IndicatorBase 

    ü 枚举和结构 

    同样必须以名词或名词短语命名。最好体现枚举或结构的特点,如: 

    enum ColorButtons '以复数结尾,表明这是一个枚举 

    structure CustomerInfoRecord '以Record结尾,表明这是一个结构体 

    ü 委派类型

    普通的委派类型以描述动作的名词命名,以体现委派类型实例的功能: 

    delegate void DataSeeker (string SeekString) 

    用于事件处理的委派类型,必须以EventHandler结尾,如: 

    delegate void DataChangedEventHandler(Object Sender

    DataChangedEventArgs e) 

    ü 接口 

    与其他类型不同,接口必须要由I作为前缀,并用形容词命名,突出表现实现接口的类将具有什么能力:

    interface ISortable 

    4) 方法命名

    方法都必须以动词或动词短语命名。 

    void Open(string commandString); 

    int SetCopyNumber(int copyNumber);

    参数的命名方法,参考后面“变量的命名方法”。

    5) 属性命名

    原则上,字段(Field)是不能公开的,要访问字段的值,一般使用属性。属性以简洁清晰的名词命名: 

    public int Concentration;

    public CustomerTypes Customer;

    6) 事件命名 

    事件是特殊的属性,只能在事件处理上下文中使用。命名的原则一般是动词或动词的分词,通过时态表明事件发生的时间: 

    event ClickEventHandler Click;

    event ColorChangedEventHangler ColorChanged; 

    7) 命名空间 

    通常,一个工程使用一个命名空间,使用根命名空间可以使代码更加整齐,容易修改。

    命名空间的语法如:

    namespace VirtualScreen; 

    随便起一个命名空间的名字绝对不是一个好主意,一定要遵守上述规定。 

  • 相关阅读:
    Python变量小秘密
    Python编解码问题与文本文件处理
    Java持久层框架Mybatis入门
    teprunner重磅更新Git打通PyCharm与测试平台
    JMeter定时器设置延迟与同步
    Docker开启安全的TLS远程连接
    消息队列之如何保证消息的幂等性
    消息队列之如何保证消息的可靠传输
    spring技术内幕学习笔记01
    linux操作指南-04
  • 原文地址:https://www.cnblogs.com/chennie/p/2829232.html
Copyright © 2020-2023  润新知