• 编程规则(一)


    编程风格守则
                                                     
    一、本文目的
    随着越来越多的项目启动,为了便于各位项目经理、程序员之前交流项目源程序,并且保证源程序的可读性,特制定本《编程风格守则》,本文的读者为项目经理、程序员,以期在编码过程之中,保持一致的风格,有利于软件工程项目的推行。本文在编写上力求求大同、存小异,在编程风格上分为两类,一类为强制风格,意为一定需要遵守,一类为推荐风格,意为希望程序员在编码时按照这样的风格。
    二、概述
    在软件工程领域,源程序的风格统一标志着可维护性、可读性,是软件项目的一个重要组成部分。而目前还没有成文的编码风格文档,以致于很多时候,程序员没有一个共同的标准可以遵守,编码风格各异,程序可维护性差、可读性也很差。
    每位程序员都有自己的编程风格,因为每位程序员都有自己的学习过程,就象每个人的个性一样,所以编程风格是风彩各异、百花齐放;而从软件工程理论、实践来看,现代软件是多人合作的结晶,编程风格是否统一,直接关系到软件项目的可读性、可维护性、培训,继而对软件开发成本有着直接的关系,编程风格一致,软件项目易培训,其它人员接手老项目的时间缩短,便于程序员之间的交流。编程风格混乱,则其它人员接手老项目时间增长,同时随着项目的不断开发,项目或者单个源程序文件内有着多种编程风格,这样不利于整个项目的开展以及程序员之间的交流。
    在开发中贯彻一定的程序开发准则,会使程序易维护、少错误,同时能够增强程序的团队开发性,使程序的专业化程度大大提高。为了保证系统开发效率,提高软件质量,以及在系统开发过程中便于团队成员间的沟通和交流,和有利于后期软件维护与升级,本文在参考业界已有的编码风格的基础上,描述了一个公司特有的风格,力求一种统一的编程风格,并从项目风格、代码文件风格、函数编写风格、变量风格、注释风格几个方面进行阐述。
    三、项目风格
    项目风格指的是针对整个项目,包括项目目录设置、相关库文件设置、集成开发环境设置等等的习惯约定。具体有如下风格守则:
    3.1    项目取名
    项目名称在项目启动前由项目规划人员取。
    3.2    项目目录设置
    为保证项目的备份方便、快捷,可将所有该项目有关的文件全部放到统一的目录之下,项目目录名称一律用英文,项目总目录名称使用项目名称(如AuSoft),在此目录下,建立一个source目录,必须有一个doc目录,一个“相关技术”目录,建立一个,一个,然后按模块分别建立不同的存放目录,,
    一级目录    二级目录    三级目录    备注
    项目名称
    如AuSoft40    AuSoftbeans    public    项目公共部分的目录
            base    基础库目录
            功能模块……    按模块需要建立不同的存放目录
        AuSoftdoc    存放项目相关的公司自己创作的各种开发文档
        AuSoftresource    项目组成员自己根据所存放的主题取名    存放项目组成员根据项目开发需要而收集的相关的各种技术文档,源码等
        AuSoftpages    public    项目公共部分的目录
            base    基础库目录
            功能模块……    按模块需要建立不同的存放目录
    3.3    集成开发环境内设置
    公司规定所有开发人员必须使用Eclipse或者Jcreator开发工具,每个项目在开发环境的设置都采用相对路径的设置,不可采用绝对路径,保证其备份到光盘设备后,恢复到硬盘后,不需要再过多的设置就可直接编译。
    3.4    项目修改记录追踪
    项目修改记录跟踪借助于版本控制软件工具CVS,用以记载项目产生以来所有的改动,其格式必须如下:
    日期:         2004/08/08
    修改人:    XXX
    修改主题:     底层通讯由于MODEM响应代码而引起的不稳定现象
    相关修改文件: CommLayer.jsp
    修改内容详细描述:
     四、文件风格
    4.1    文件命名
    文件命名要能大体上表达出此文件主要包含哪些内容,是做什么用的等主体功能,采用文件所体现的主体功能的汉语拼音(全拼与简拼根据文件长度自行决定)来命名,文件命名不能少于6个字母,也不能大于20个字母。
    4.2    文件头部注释
    文件头部注释主要是表明该文件的一些信息,并且要符合JAVADOC的格式,其格式如下:
    /*
     *  文件名:
     *  创建时间:
     *  创建者:
     *  内容描述:
     * 
     */
    4.3    空行约定
    文件之中不得存在无规则的空行,比如说连续十个空行,一般来讲函数与函数之前的空行为3行,在函数体内部,在逻辑上独立的两个函数块可适当空行,一般为1-2行。
    4.4    页宽
    页宽应该设置为80字符. 源代码一般不会导致无法完整显示, 超长的语句应该在一个逗号或者一个操作符后折行. 一条语句折行后, 应该比原来的语句再缩进3个字符. 
    4.5    文件规格化功能键
    源文件在编写完毕时,有一种排版格式化插件?,进行文件规格化,如果不能进行格式化,按下面的代码排版格式手工进行格式化。
    五、代码与注释风格
    命名规则
    所有方法、变量、包、类等的命名要能大体上表达出它主要包含哪些内容,是做什么用的等主体功能,采用它所体现的主体功能的汉语拼音(全拼与简拼根据文件长度自行决定)来命名,文件命名不能少于6个字母,也不能大于20个字母。
    1 package的命名
    package 的名字应该都是由一个小写字母组成。 
    例如:package quanxianpackage;
    
    2 class 的命名 
    class 的名字必须由大写字母开头而其他字母都小写的单词组成,下一个字母的开头大写,其余的字母小写。 
    例如:class OracleConnectionBean
    
    3 class 变量的命名 
    变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。 
    例如:OracleOCIConnection oracleConn=null;
    
    4 static final 变量的命名 
    static final 变量的名字应该都大写,并且指出完整含义。 
    例如:static final CONTEXT_TYPE=”GB2312”;//设置页面字符
    
    5 参数的命名 
    参数的名字必须和变量的命名规范一致。 
    
    6 数组的命名 
    数组应该总是用下面的方式来命名: 
    例如:byte[] buffer; 
    而不是: 
    byte buffer[]; 
    
    7 方法的参数 
    使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字: 
    setUserName(String userName){
        this.userName=userName;
    }
    注释风格
    所有注释必须符合JAVADOC注释规范
    不需要进入JAVADOC的  单行注释用双斜杠进行注释;多行注释用/* */进行注释;
    package 行要在 import 行之前,如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。 例如:
    
    package com.test;
    import java.io.*;
    这里 java.io.* 使用来代替InputStream and OutputStream 的。 
    
    接下来的是类的注释,一般是用来解释类的。 
    
    /**
     * 在这里添加类的描述。
     *
     * 时间  
     * 作者  Zhichao Zhao
     */
    
    接下来是类定义,包含了在不同的行的 extends 和 implements 
    
    public class Test 
    extends SomeClass
    implement SomeClass{
    /** 在这里添加类的执行注释。 */
    
    接下来是类的成员变量: 
    
    /**classVar1 成员变量的注释 */
        public static int classVar1;
    
        /**
         * classVar2 成员变量的注释第一行
         * 成员变量的注释第二行
         */
        private static Object classVar2;
    
        /**
         * ...Test 构造方法注释...
         */
        public Test() {
        }
    
        /**
         * ...doSomething 方法的简述...
         */
    public void doSomething() 
    {
        }
    
        /**
         * ...doSomethingElse 方法的简述...
    *@参数 someParam true 表示有权限 fasle 表示没有权限
    *@返回值 没有返回值
    *
         */
    public void doSomethingElse(boolean someParam) 
    {
    }
    
    /**
         * @参数 UserName 用户输入的用户名称
         * @返回值 返回用户输入的用户名称
         * @关键逻辑说明 返回用户输入的用户名称
    * @exception NullPointerException 当UserName的值为null时,
    * 返回一个空指针异常。
         */
        
    public String doSomething(String UserName){
    try{
    this.classVar1=UserName.trim();
    }
    catch(NullPointerException e){
    }
    return classVar1;
    }
    }
    
    所有成员变量必须生成文档(JavaDoc)。 
    
    代码缩进
    每一个嵌套的函数块,使用一个TAB缩进(可以设定为3个空格),大括号必须放在条件语句的下一行(也可以在一行),单独成一行,便于匹对:
    if(condition){
        while(condition){
        }
    }
    
    括号
    大括号{}的要求
    if(condition){
        while(condition){
        }
    }
    
    小括号()的要求
    左括号和后一个字符之间不应该出现空格, 同样, 右括号和前一个字符之间也不应该出现空格. 下面的例子说明括号和空格的错误及正确使用: 
    
    CallProc( AParameter ); // 错误 
    CallProc(AParameter); // 正确 
    
    不要在语句中使用无意义的括号. 括号只应该为达到某种目的而出现在源代码中。下面的例子说明错误和正确的用法: 
    
    if ((I) = 42) {a=5;} // 错误 - 括号毫无意义 
    if((I==4)and (I<5))// 正确 - 的确需要括号  
  • 相关阅读:
    [macOS] git忽略所有的.DS_Store文件
    [macOS] finder变慢提速
    [React Native] change port when running react native
    转载: 我如何使用 Django + Vue.js 快速构建项目
    MySQL Connector/NET 使用小结(踩坑之路)
    C# 控制台程序(Console Application )启动后隐藏
    解决 pycharm can not save setting
    ubuntu 16.04 LTS 安装 teamviewer 13

    Python 编程规范梳理
  • 原文地址:https://www.cnblogs.com/beeone/p/3618211.html
Copyright © 2020-2023  润新知