编码规范_编码规范系列(一):eclipse code templates设置 - CSDN
精华内容
参与话题
  • 【代码规范】常见编码规范

    万次阅读 2018-06-26 16:27:31
    文章来源:公众号-智能化IT系统。1.明确方法功能,精确(而不是近似)地实现方法设计。如果一个功能将在多处实现,即使只有两行代码,也应该编写方法实现。说明:虽然为仅用一两行就可完成的功能去编方法好象没有...

    文章来源:公众号-智能化IT系统。


    1.明确方法功能,精确(而不是近似)地实现方法设计。如果一个功能将在多处实现,即使只有两行代码,也应该编写方法实现。

    说明:

    虽然为仅用一两行就可完成的功能去编方法好象没有必要,但用方法可使功能明确化,增加程序可读性,亦可方便维护、测试。

     

    2.应明确规定对接口方法参数的合法性检查应由方法的调用者负责还是由接口方法本身负责,缺省是由方法调用者负责。

    说明:

    对于模块间接口方法的参数的合法性检查这一问题,往往有两个极端现象,即:要么是调用者和被调用者对参数均不作合法性检查,结果就遗漏了合法性检查这一必要的处理过程,造成问题隐患;要么就是调用者和被调用者均对参数进行合法性检查,这种情况虽不会造成问题,但产生了冗余代码,降低了效率。

     

    3.明确类的功能,精确(而不是近似)地实现类的设计。一个类仅实现一组相近的功能。说明:划分类的时候,应该尽量把逻辑处理、数据和显示分离,实现类功能的单一性。

    示例:

    数据类不能包含数据处理的逻辑。通信类不能包含显示处理的逻辑。

     

    4.所有的数据类必须重载toString() 方法,返回该类有意义的内容。说明:父类如果实现了比较合理的toString() , 子类可以继承不必再重写。

    示例:

    public TopoNode
     {
         private String nodeName;
         public String toString()
          {
             return "NodeName : " +  nodeName;
          }
     }

     

    5.数据库操作、IO操作等需要使用结束close()的对象必须在try -catch-finally finallyclose()


    6.异常捕获后,如果不对该异常进行处理,则应该记录日志(针对后台)。

    说明:若有特殊原因必须用注释加以说明。


    7.自己抛出的异常必须要填写详细的描述信息。

    说明:便于问题定位。

    示例:

    throw  new IOException("Writing data error! Data: " + data.toString());

     

    8. 在程序中使用异常处理还是使用错误返回码处理,根据是否有利于程序结构来确定,并且异常和错误码不应该混合使用,推荐使用异常。说明:一个系统或者模块应该统一规划异常类型和返回码的含义。但是不能用异常来做一般流程处理的方式,不要过多地使用异常,异常的处理效率比条件分支低,而且异常的跳转流程难以预测。

     

    9.避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的静态变量来代替。
    示例:

    如下的程序可读性差

    if  (state == 0)

    {

    state = 1;

    ... // program  code

    }

    应改为如下形式

    private final static int  TRUNK_IDLE = 0;
     private final static int TRUNK_BUSY = 1;
     private final static int TRUNK_UNKNOWN = -1;
     
     

    if (state == TRUNK_IDLE)

    {
         state = TRUNK_BUSY;
         ... // program code

    }

     

    10.数组声明的时候使用 int[] index ,而不要使用 int index[] 。说明:

     

    11.异常捕获尽量不要直接 catch (Exception ex) ,应该把异常细分处理。


    12.不要使用难懂的技巧性很高的语句,除非很有必要时。说明:高技巧语句不等于高效率的程序,实际上程序的效率关键在于算法。


    公众号-智能化IT系统。每周都有技术文章推送,包括原创技术干货,以及技术工作的心得分享。扫描下方关注。



    公众号-智能化IT系统。每周都有技术文章推送,包括原创技术干货,以及技术工作的心得分享。扫描下方关注。

    展开全文
  • 华为编码规范 JAVA 华为编码规范 JAVA 华为编码规范 JAVA 华为编码规范 JAVA 华为编码规范 JAVA 华为编码规范 JAVA
  • 11条最全面的C/C++编码规范总结

    万次阅读 多人点赞 2018-05-11 15:46:54
    每个公司基本都有自己的编程风格,每个人也有各自的偏好,这篇文章的很多规则个人用的比较习惯转需:https://blog.csdn.net/zang141588761/article/details/50608736对于不同的编程语言来说,具体的编码规范可以有很...

    每个公司基本都有自己的编程风格,每个人也有各自的偏好,这篇文章的很多规则个人用的比较习惯

    转需:https://blog.csdn.net/zang141588761/article/details/50608736

    对于不同的编程语言来说,具体的编码规范可以有很大的不同,但是其宗旨都是一致的,就是保证代码在高质量完成需求的同时具备良好的可读性、可维护性。例如我们可以规定某个项目的C语言程序要遵循这样的规定:变量的命名,头文件的书写和#include 等等。

    下面是一些广为采用的编码规范:

      • GNU Coding Standards
      • Guidelines for the Use of the C Language in Vehicle Based Software
      • C++ Coding Guidelines
      • SUN Code Conventions for Java

    以下是一些介绍编码、编码规范的书籍:

      • C++编码规范,陈世忠,人民邮电出版社,2002
      • 高质量程序设计指南:C++/C语言,林锐等,电子工业出版社,2003

    :以下只是根据课题组已有的经验给出的总结,并非对所有场景均适用。

    对于高质量的工程,一般会做到:

      1.代码简洁精炼,美观,可读性好,高效率,高复用,可移植性好,高内聚,低耦合,没有冗余,不符合这些原则,必须特别说明。
      2.规范性,代码有规可循。特殊排版、特殊语法、特殊指令,必须特别说明。

    一、文件排版方面


    1. 包含头文件

     • 先系统头文件,后用户头文件。
     • 系统头文件,稳定的目录结构,应采用包含子路径方式。
     • 自定义头文件,不稳定目录结构,应在dsp中指定包含路径。
     • 系统头文件应用:#include <xxx.h>
     • 自定义同文件应用:#include "xxx.h"
     • 只引用需要的头文件。

    2. h和cpp文件

     • 头文件命名为.h,内联文件命名为.inl;C++文件命名为*.cpp
     • 文件名用大小写混合,或者小写混合。例如DiyMainview.cppinfoview.cpp。不要用无意义的名称:例如XImage.cppSView.cppxlog.cpp
     • 头文件除了特殊情况,应使用#ifdef控制块。
     • 头文件#endif应采用行尾注释。
     • 头文件,首先是包含代码块,其次是宏定义代码块,然后是全局变量,全局常量,类型定义,类定义,内联部分。
     • CPP文件,包含指令,宏定义,全局变量,函数定义。

    3. 文件结构

     • 文件应包含文件头注释和内容。
     • 函数体类体之间原则上用2个空行,特殊情况下可用一个或者不需要空行。

    4. 空行

     • 文件头、控制块,#include部分、宏定义部分、class部分、全局常量部分、全局变量部分、函数和函数之间,用两个空行。

    二、注释方面


    1. 文件头注释

     • 作者,文件名称,文件说明,生成日期(可选)

    2. 函数注释

     • 关键函数必须写上注释,说明函数的用途。
     • 特别函数参数,需要说明参数的目的,由谁负责释放等等。
     • 除了特别情况,注释写在代码之前,不要放到代码行之后。
     • 对每个#else#endif给出行末注释。
     • 关键代码注释,包括但不限于:赋值,函数调用,表达式,分支等等。
     • 善未实现完整的代码,或者需要进一步优化的代码,应加上 // TODO …
     • 调试的代码,加上注释 // only for DEBUG
     • 需要引起关注的代码,加上注释 // NOTE …
     • 对于较大的代码块结尾,如for,while,do等,可加上 // end for|while|do

    三、命名方面


    1. 原则

     • 同一性:在编写一个子模块或派生类的时候,要遵循其基类或整体模块的命名风格,保持命名风格在整个模块中的同一性。
     • 标识符组成:标识符采用英文单词或其组合,应当直观且可以拼读,可望文知意,用词应当准确,避免用拼音命名。
     • 最小化长度 && 最大化信息量原则:在保持一个标识符意思明确的同时,应当尽量缩短其长度。
     • 避免过于相似:不要出现仅靠大小写区分的相似的标识符,例如"i"与"I""function""Function"等等。
     • 避免在不同级别的作用域中重名:程序中不要出现名字完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但容易使人误解。
     • 正确命名具有互斥意义的标识符:用正确的反义词组命名具有互斥意义的标识符,如:"nMinValue" 和"nMaxValue""GetName()" 和"SetName()" ….
     • 避免名字中出现数字编号:尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。

    2. T,C,M,R类

     • T类表示简单数据类型,不对资源拥有控制权,在析构过程中没有释放资源动作。
     • C表示从CBase继承的类。该类不能从栈上定义变量,只能从堆上创建。
     • M表示接口类。
     • R是资源类,通常是系统固有类型。除了特殊情况,不应在开发代码中出现R类型。

    3. 函数名

     • M类的函数名称应采用HandleXXX命名,例如:HandleTimerEvent;不推荐采用java风格,例如handleTimerEvent;除了标准c风格代码,不推荐用下划线,例如,handle_event
     • Leave函数,用后缀L。
     • Leave函数,且进清除栈,用后缀LC。
     • Leave函数,且删除对象,用后缀LD。

    4. 函数参数

     • 函数参数用a作为前缀。
     • 避免出现和匈牙利混合的命名规则如apBuffer名称。用aBuffer即可。
     • 函数参数比较多时,应考虑用结构代替。
     • 如果不能避免函数参数比较多,应在排版上可考虑每个参数占用一行,参数名竖向对齐。

    5. 成员变量

     • 成员变量用m最为前缀。
     • 避免出现和匈牙利混合的命名规则如mpBuffer名称。用mBuffer即可。

    6. 局部变量

     • 循环变量和简单变量采用简单小写字符串即可。例如,int i;
     • 指针变量用p打头,例如void* pBuffer;

    7. 全局变量

     • 全局变量用g_最为前缀。

    8. 类名

     • 类和对象名应是名词。
     • 实现行为的类成员函数名应是动词。
     • 类的存取和查询成员函数名应是名词或形容词。

    9. 风格兼容性

     • 对于移植的或者开源的代码,可以沿用原有风格,不用C++的命名规范。

    四、代码风格方面

    1. Tab和空格

     • 每一行开始处的缩进只能用Tab,不能用空格,输入内容之后统一用空格。除了最开始的缩进控制用Tab,其他部分为了对齐,需要使用空格进行缩进。这样可以避免在不同的编辑器下显示不对齐的情况。
     • 在代码行的结尾部分不能出现多余的空格。
     • 不要在"::","->","."前后加空格。
     • 不要在",",";"之前加空格。

    2. 类型定义和{

     • 类,结构,枚举,联合:大括号另起一行

    3. 函数

     • 函数体的{需要新起一行,在{之前不能有缩进。
     • 除了特别情况,函数体内不能出现两个空行。
     • 除了特别情况,函数体内不能宏定义指令。
     • 在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。
     • 在头文件定义的inline函数,函数之间可以不用空行,推荐用一个空行。

    4. 代码块

     • "if"、"for"、"while"、"do"、"try"、"catch" 等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 “{ }” 。这样可以防止书写和修改代码时出现失误。
     • "if"、"for"、"while"、"do"、"try"、"catch" 的括号和表达式,括号可紧挨关键字,这样强调的是表达式。

    5. else

    • if语句如果有else语句,用 } else { 编写为一行,不推荐用 3 行代码的方式。

    6. 代码行

     • 一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。
     • 多行变量定义,为了追求代码排版美观,可将变量竖向对齐。
     • 代码行最大长度宜控制在一定个字符以内,能在当前屏幕内全部可见为宜。

    7. switch语句

     • case关键字应和switch对齐。
     • case子语句如果有变量,应用{}包含起来。
     • 如果有并列的类似的简单case语句,可考虑将case代码块写为一行代码。
     • 简单的case之间可不用空行,复杂的case之间应考虑用空行分割开。
     • case字语句的大括号另起一行,不要和case写到一行。
     • 为所有switch语句提供default分支。
     • 若某个case不需要break一定要加注释声明。

    8. 循环

     • 空循环可用 for( ;; ) 或者 while( 1 ) 或者 while( true )

    9. 类

     • 类继承应采用每个基类占据一行的方式。
     • 单继承可将基类放在类定义的同一行。如果用多行,则应用Tab缩进。
     • 多继承在基类比较多的情况下,应将基类分行,并采用Tab缩进对齐。
     • 重载基类虚函数,应在该组虚函数前写注释 // implement XXX
     • 友元声明放到类的末尾。

    10. 宏

     • 不要用分号结束宏定义。
     • 函数宏的每个参数都要括起来。
     • 不带参数的宏函数也要定义成函数形式。

    11. goto

     • 尽量不要用goto

    五、类型


    • 定义指针和引用时*和&紧跟类型。
    • 尽量避免使用浮点数,除非必须。
    • 用typedef简化程序中的复杂语法。
    • 避免定义无名称的类型。例如:typedef enum { EIdle, EActive } TState;
    • 少用union,如果一定要用,则采用简单数据类型成员。
    • 用enum取代(一组相关的)常量。
    • 不要使用魔鬼数字。
    • 尽量用引用取代指针。
    • 定义变量完成后立即初始化,勿等到使用时才进行。
    • 如果有更优雅的解决方案,不要使用强制类型转换。

    六、表达式


    • 避免在表达式中用赋值语句。
    • 避免对浮点类型做等于或不等于判断。
    • 不能将枚举类型进行运算后再赋给枚举变量。
    • 在循环过程中不要修改循环计数器。
    • 检测空指针,用 if( p )
    • 检测非空指针,用 if( ! p )

    七、函数


    1. 引用

     • 引用类型作为返回值:函数必须返回一个存在的对象。
     • 引用类型作为参数:调用者必须传递一个存在的对象。

    2. 常量成员函数

     • 表示该函数只读取对象的内容,不会对对象进行修改。

    3. 返回值

     • 除开void函数,构造函数,析构函数,其它函数必须要有返回值。
     • 当函数返回引用或指针时,用文字描述其有效期。

    4. 内联函数

     • 内联函数应将函数体放到类体外。
     • 只有简单的函数才有必要设计为内联函数,复杂业务逻辑的函数不要这么做。
     • 虚函数不要设计为内联函数。

    5. 函数参数

     • 只读取该参数的内容,不对其内容做修改,用常量引用。
     • 修改参数内容,或需要通过参数返回,用非常量应用。
     • 简单数据类型用传值方式。
     • 复杂数据类型用引用或指针方式。

    八、类


    1. 构造函数

     • 构造函数的初始化列表,应和类的顺序一致。
     • 初始化列表中的每个项,应独占一行。
     • 避免出现用一个成员初始化另一个成员。
     • 构造函数应初始化所有成员,尤其是指针。
     • 不要在构造函数和析构函数中抛出异常。

    2. 纯虚函数

     • M类的虚函数应设计为纯虚函数。

    3. 构造和析构函数

     • 如果类可以继承,则应将类析构函数设计为虚函数。
     • 如果类不允许继承,则应将类析构函数设计为非虚函数。
     • 如果类不能被复制,则应将拷贝构造函数和赋值运算符设计为私有的。
     • 如果为类设计了构造函数,则应有析构函数。

    4. 成员变量

     • 尽量避免使用mutableVolatile
     • 尽量避免使用公有成员变量。

    5. 成员函数

     • 努力使类的接口少而完备。
     • 尽量使用常成员函数代替非常成员函数,const函数
     • 除非特别理由,绝不要重新定义(继承来的)非虚函数。(这样是覆盖,基类的某些属性无初始化)

    6. 继承

     • 继承必须满足IS-A的关系,HAS-A应采用包含。
     • 虚函数不要采用默认参数。
     • 除非特别需要,应避免设计大而全的虚函数,虚函数功能要单一。
     • 除非特别需要,避免将基类强制转换成派生类。

    7. 友元

     • 尽量避免使用友元函数和友元类。

    九、错误处理


    • 申请内存用new操作符。
    • 释放内存用delete操作符。
    • newdeletenew[]delete[]成对使用。
    • 申请内存完成之后,要检测指针是否申请成功,处理申请失败的情况。
    • 谁申请谁释放。优先级:函数层面,类层面,模块层面。
    • 释放内存完成后将指针赋空,避免出现野指针。
    • 使用指针前进行判断合法性,应考虑到为空的情况的处理。
    • 使用数组时,应先判断索引的有效性,处理无效的索引的情况。
    • 代码不能出现编译警告。
    • 使用错误传递的错误处理思想。
    • 卫句风格:先处理所有可能发生错误的情况,再处理正常情况。
    • 嵌套do-while(0)宏:目的是将一组语句变成一个语句,避免被其他if等中断。

    十、性能


    • 使用前向声明代替#include指令。Class M;
    • 尽量用++i代替i++。即用前缀代替后缀运算。
    • 尽量在for循环之前,先写计算估值表达式。
    • 尽量避免在循环体内部定义对象。
    • 避免对象拷贝,尤其是代价很高的对象拷贝。
    • 避免生成临时对象,尤其是大的临时对象。
    • 注意大尺寸对象数组。
    • 80-20原则。

    十一、兼容性


    • 遵守ANSI C和ISO C++国际标准。
    • 确保类型转换不会丢失信息。
    • 注意双字节字符的兼容性。
    • 注意运算溢出问题。
    • 不要假设类型的存储尺寸。
    • 不要假设表达式的运算顺序。
    • 不要假设函数参数的计算顺序。
    • 不要假设不同源文件中静态或全局变量的初始化顺序。
    • 不要依赖编译器基于实现、未明确或未定义的功能。
    • 将所有#include的文件名视为大小写敏感。
    • 避免使用全局变量、静态变量、函数静态变量、类静态变量。在使用静态库,动态库,多线程环境时,会导致兼容性问题。
    • 不要重新实现标准库函数,如STL已经存在的。

    展开全文
  • 华为C/C++编码规范

    千次下载 热门讨论 2020-07-30 23:30:34
    华为C/C++的编码规范,刚开始编程的程序员们学习一下华为的编码风格哦!
  • PHP程序员为什么要培养自己的编码规范? 为什么我们要培养自己的编码规范?...我们写代码的时候,一个好的编码规范,对我们来说能够起到很多意向不到的效果。...编码规范包含两大块,代码规范和注释规范...

    PHP程序员为什么要培养自己的编码规范?

     

     

    为什么我们要培养自己的编码规范?

    我们写代码的时候,一个好的编码规范,对我们来说能够起到很多意向不到的效果。至少会有一下的好处:

    1.提高我们的编码效率。整齐划一的代码方便我们进行复制粘贴嘛!

    2.提高代码的可读性。

    3.显示我们专业。别人看到了我们的代码,发现整个代码的书写流程都整齐划一,瞬间逼格就上去了!

    4.方便团队协同工作。大家使用同一的规范,这样就消除了五花八分的书写方式,同一协调!

    编码规范包含两大块,代码规范和注释规范

    其实我们所写的php脚本,其实也就是由两大块组成的,即对代码的书写、对代码的注释!不同的框架,甚至不同的公司,对这方面都会有所不同,这里只是已将之言,仅仅是对自己的书写规范进行一个总结!希望能对其他的朋友以启示。

     

    1、代码的书写规范

    • 文件夹的命名:

    文件夹同一使用小写字母。如存放控制器的文件夹,直接命名为controller即可

    • 文件的命名:

    如果是类文件的话,那么文件的命名应该同类名称保持一致,统一使用大驼峰。如Session.class.php , 对应类名称为Session,如果是普通的工具脚本,那么统一使用小驼峰,如common.php

    • 类名称的命名:

    类名称同一使用大驼峰,Cookie类

    • 方法名的命名:

    统一使用小驼峰,一般使用 动词 + 名次 的形式来描述该方法的功能,如sendMessage,发送短信。
    在面向对象中,遵循同样的规则,但是个别地方有所区别:

    
     

    public getUserName()
    protected _getTotalAmount()
    private _setBlanceAmount()

    • 变量的命名规范:

    关于变量,我们需要多说几点:
    ①无论在面向对象还是非面向对象的语法中,变量统一使用小驼峰,如:$workYears。
    但是在面向对象中又有所不同,public 、 protected 、 private ,protected或者private属性的时候,前面加上了 _ 作为区别

    public $startPosition = 1;
    protected $_salaryAmount =1000;
    private $_sex = 'formale';

    ②如果是常量的话,统一使用大写,中间使用下划线进行分割。

    define('CURRENT_SCRIPT', 'index.php');
    const TRANSACTION_TYPE = 'income';

    ③全局变量,使用大驼峰,前缀加上 _ ,所有的单词首字母大写。因为知道一个变量的作用域是非常重要的,所以局部变量和全局变量应该很明显的进行分开!

    $_System_Config;$_Root_Path;

     

    缩进符

    关于编码的缩进符号,我们统一使用制表符缩进!也许有的人会问为什么不适用空格缩进的呢?原因很简单,大部分的编辑器都支持制表符等于多少个空格,而使用空格就没得调了!

     

    运算符号

    所有的两元运算符号,都应该前后使用空格进行

    
     

    $name = 'zero';
    $age > 18 ? 'adult' : 'children';

     

    常见的流程语句规划

    我们约定,所有的流程语句的花括号都单独占据一行。理由:如果遇到较为复杂的业务逻辑,花括号会出现很多的嵌套,这样一来我们会混淆个个对应的花括号!

    1.分支语句

    
     

    if($age >= 18 && $age <= 30) 
    {
      echo 'young man';
    }
    else if($age > 30 && $age <= 60)
    {
      echo 'middle aged';
    }
    else
    {
      echo 'old man';
    }

    //下面这段代码高手我们一个问题,在if语句中,即使在可以不要花括号的情况下,花括号也是要写上的
    if($age > 60)
    {
      echo 'I am very old';
    }

    switch($status)
    {
      case 'forbiden':
        echo 'login forbidden';
        break;

      case 'normal':
        echo 'login in';
        break;

      default:
        echo 'status is wrong' :
        break;
    }

    2.循环语句

    
     

    while($condition)
    {
      statesments......;
    }

    foreach($arrayList as $arrayKey => $arrayItem)
    {
      states......;
    }
    do
    {
      statements......;  
    }
    while($condition)


    for($start; condition; changenumber)
    {
      statements......;
    }

     

    2、注释的书写规范

    很多人说好的代码是不需要注释的,其实,个人认为这是一句很扯淡的话(也可能他是对的,除非整个团队就他一个人,他包办了一切,不用看别人的代码)。

    个人的观点是:多写注释,无论是对团队的其他人,还是对自己都是非常友好的!

    注释至少有以下几个作用:

    • 有利于提高代码的可读性,毕竟读你的注释要比读你的代码要容易的多!

    • 有利于规划自己的代码布局!之所以这么说,是因为和代码注释的种类关。“有利于代码的布局”,这种看着有点悬的事,光说是说不明白的,我们需要实实在在的例子做支撑!

    • 由于我们的注释规范是按照phpdocumentor的要求,所以通过这个工具,还可以生成一份对代码的总体说明,相当于一个使用说明书!

    代码注释的种类

    1.块注释
    块注释,个人认为主要用在了三个地方。对php脚本的描述、对一个大的功能模块的描述、在一行之内不能写完注释的时候,也应该放在块注释中。

    2.行注释
    行注释,个人认为他是配合块注释进行工作的!一般用于描述一个大的功能模块的具体细节!

     

    下面附上一些php的编程规范,给大家参考下

     

    一、文件标记:

     1.所有php文件,其代码标记均采用完整php标签,不建议使用短标签(短标签容易和xml混淆,php从5.4开始默认不支持短标记)。

     2.对于只有php的代码文件,建议省略结尾处的‘?>'。这是为了防止多余的空格或其他字符影响到代码。

     

    二、文件和目录命名

    1.程序文件名和目录名均采用有意义的英文命名,不使用拼音和无意义的字母,只允许出现字母、数字、下划线和中划线字  符,同时必须以‘.php'结尾(模板文件除外),多个词间使用驼峰命名法。

    
     

    例://类统一采用:DemoTest.class.php
    //接口统一采用:DemoTest.interface.php
    //其他按照各自的方式:demoTest.{style}.php

     

    三、文件目录结构

    规范的目录结构有助于团队协作开发和后期维护。

    
     

    ——app            //独立的应用
    ——class          //单个的类文件,共用的类文件
    ——conf/inc    //配置文件或目录
    ——data          //数据文件或目录
    ——doc           //程序相关文档
    ——htdocs       //document_root
    ——images       //所有图片文件存放路径
    ——css            //css文件
    ——js               //js文件
    ——lib              //共用类库
    ——template    //模板文件
    ——tmp            //临时文件目录
    ——cache    //缓存文件
    ——session  //SESSION文件
    ——template_c    //编译后的模板文件
    ——other
    ——upload      //上传文件
    ——manage    //后台管理文件目录

     

    四、命名规范

    1.变量命名:php中变量区分大小写,一个有效的变量名由数字、字母或下划线开头,后面跟任意数量的字母、数字、下划线。

        a)程序整体以驼峰命名法,以小写字母开始,同时命名要有意义。(function displayName())

        b)PHP全局变量键值两边都有‘_',中间用驼峰命名法命名。($_GLOBAL['_beginTime_'])

        c)普通变量整体采用驼峰命名法,建议在变量前加表示类型的前缀。不确定类型的以大写字符开头。

        d)函数名要尽量有意义,尽量缩写。

     

    2.类及接口命名:

        a)以大写字母开头。

        b)多个单词组成的变量名,单词之间不用间隔,各个单词首字母大写。

        c)类名与类文件名保持一致。

        d)程序中所有的类名唯一。

        e)抽象类应以Abstract开头。

        接口命名规则:

            i)采用和类相同的命名规则,但在其命名前加‘i'字符,表示接口。

            ii)尽量保持和实现它的类名一致。

     

    3.数据库命名:在数据库相关命名中,一律不出现大写。

        a)表名均使用小写字母。

        b)表名使用同一的前缀且前缀不能为空。

        c)对于多个单词组成的表名,使用‘_'间隔。

        d)表字段命名规则。

                i)全部使用小写字母。

                ii)多个单词不用下划线分割。

                iii)给常用字段加上表名首字母做前缀。

                iv)避免使用关键字和保留字。

     

    五、注释规范

    1.程序注释:写在代码前面而不是后面,单行代码按照习惯写在代码尾部;大段注释采用/**/的方式,通常为文件或函数的顶部,代码内部使用'//';注释不宜太多;代码注释应该描述为什么而不是做什么,给代码阅读者提供最主要的信息。

     

    2.文件注释:文件注释一般放在文件的顶部,包括本程序的描述、作者、项目名称、文件名称、时间日期、版本信息、重要的使用说明(类的调用,注意事项等)。版本更改要修改版本号,并加上mofify注释。

     

    3.类和接口注释:按照一般的习惯,一个文件只包含一个类。

     

    4.方法和函数注释:方法和函数的注释写在前面,通常需要表明信息的主要可见性、参数类型和返回值类型。

    
     

    /**
    *    连接数据库
    *    @param string $dbhost    数据库服务器地址
    *    @param string $dbuser    数据库用户名
    *    @param string $dbpwd    数据库密码
    */

     

    六、代码风格

    1.缩进和空格:使用4个空格做为缩进,不使用Tab键;变量赋值时,等号两边留出空格。($url = '$_GET['url']';)

     

    2.语句断行:尽量保证程序语句一行即一句;尽量不要使一行的代码过长,80个字符以内;如果一行的代码太长,请使用类似于‘.='方式断行连接;执行数据库的sql语句操作时,尽量不要再函数内写sql语句,而先用变量定义sql语句,然后在执行操作的函数中调用定义的变量。

     

    3.更好的习惯:在代码中使用下面列举的方法,可以使代码更优雅。

    • 多使用php中已经存在的常量,而不要自己定义。

    例://换行

    
     

    echo $msg."\r\n";
    echo $msg,PHP_EOL;

    php中PHP_EOL是一个预定义常量,表示一行结束,随着所使用系统不同,使用PHP_EOL代码可移植性更高

    • 在echo中使用逗号做连接符,比用‘.'做连接符代码更美观。

    • 单引号的效率高于双引号,但二者在使用上有区别,学会使用printf函数。

    
     

    例://echo
    echo  '每个'.$scholl.'大约有'.floor($avg).'个学生';
    //printf
    $format = '每个%s大于有$d个学生';
    printf($format,$school,$avg);

    • 详细的注释

    • 不要滥用语法糖,语法糖就是语言中的潜规则,即不具备普遍代表性的语法。

     

     

    来源:PHP博客  

    https://mp.weixin.qq.com/s?__biz=MzIwNjQ5MDk3NA==&mid=2247490576&idx=1&sn=266e1ce2047e10f8eca561c8d85e1f37&chksm=97218021a05609371602e9d1477bec583ebe5ce5202b847d73f429c7f4c193bfd2bff5fc3e31&scene=126&sessionid=1590231190&key=7db6a7c634590122e8405e7c79549425de030386ae4a29940bb5b0396f7f649c0ca00ea137001d934722b51656707fdc67e731ab966c60e8dc479ed85393426b309597223dec9c0987afda919904fca3&ascene=1&uin=MTY4OTc4NTc4Nw%3D%3D&devicetype=Windows+10+x64&version=62090070&lang=zh_CN&exportkey=A7A7K7Q8xlwa4O53lgozoJI%3D&pass_ticket=sOczJEOrQub7kM3ctZ5iKhwImjmVQIWIGo7%2BDlteGTKrtC7yw6x72S7jXDqyuhIX

    
     

     

    展开全文
  • 编码规范

    2020-07-26 19:09:00
    编码规范 1. 代码清晰度 无规矩不成方圆,编程也是有套路的,好的代码不仅要好的性能,还要有好的规范。 如果代码没有按照一定的规范进行编写,那么代码的可维护性就会很差,相信任何人都不太愿意接手不规范的代码...

    编码规范

    1. 代码清晰度

    无规矩不成方圆,编程也是有套路的,好的代码不仅要好的性能,还要有好的规范。

    如果代码没有按照一定的规范进行编写,那么代码的可维护性就会很差,相信任何人都不太愿意接手不规范的代码。代码的清晰度是一个衡量开发人员编码素质的重要标准。

    2. PSR规范

    每一个编程语言都有自己的编码规范,PHP也不例外,PHP语言公认的编码规范就是PSR规范,PSR规范官方网址https://www.php-fig.org/psr/

    PSRPHP Standard Recommendations的简写,由PHP FIG组织制定的PHP规范,FIGFramework Interoperability Group(框架可互用性小组)的缩写,由几位开源框架的开发者成立于 2009 年,从那开始也选取了很多其他成员进来(包括但不限于Laravel, Joomla, Drupal, Composer, Phalcon, Slim, Symfony, Zend Framework等)。

    • 2.1 主要psr规范
    规范名称 内容
    psr-1 语法规范
    psr-3 日志接口规范
    psr-4 类自动加载规范
    psr-6 缓存接口规范
    psr-11 容器接口规范
    psr-16 简单缓存接口规范
    • 2.2 PSR规范术语
    术语 含义
    MUST 必须
    MUST NOT 一定不能
    REQUIRED 需要
    SHALL 将会
    SHALL NOT 不会
    SHOULD 应该
    SHOULD NOT 不应该
    RECOMMENDED 推荐
    MAY 可以
    OPTIONAL 可选的

    3. PSR-1

    PSR-1规范主要对PHP文件及语法做了规范,主要内容如下。

    • Files MUST use only <?php and <?= tags
    • Files MUST use only UTF-8 without BOM for PHP code
    • Files SHOULD either declare symbols (classes, functions, constants, etc.) or cause side-effects (e.g. generate output, change .ini settings, etc.) but SHOULD NOT do both
    • Namespaces and classes MUST follow an “autoloading” PSR: [PSR-0, PSR-4]
    • Class names MUST be declared in StudlyCaps
    • Class constants MUST be declared in all upper case with underscore separators
    • Method names MUST be declared in camelCase

    4. 符合PSR-1规范的示例类

    region注释块对Phpstorm ide友好,阅读代码的时候可以折叠,建议在实际开发中将相关联代码块整体用region注释块标注功能,便于阅读代码。

    <?php
    //文件名以<?php开始,命名空间和目录保持一致,遵从PSR-4类自动加载
    namespace app\models;
    
    
    //类名称使用大驼峰
    class UserModel
    {
        //region 1.1 常量规范
        //常量所有单词全部大写,单词间用下划线分隔
        const SOURCE_PC      = 1;
        const SOURCE_ANDROID = 2;
        const SOURCE_IOS     = 3;
        const SOURCE_WEIXIN  = 4;
        //endregion
    
        //region 1.2 属性规范
        //public属性使用小驼峰
        public $userId;
    
        //static属性规范与实例属性规范一致
        public static $sourceMap = [
            self::SOURCE_PC      => 'PC',
            self::SOURCE_ANDROID => 'ANDROID',
            self::SOURCE_IOS     => 'IOS',
            self::SOURCE_WEIXIN  => 'WEIXIN',
        ];
        
        //protected属性使用下划线开头,单词遵从小驼峰
        protected $_loginTimes = 0;
        
        //static属性规范与实例属性规范一致
        protected static $_dataPool;
        
        //private属性使用下划线开头,单词遵从小驼峰
        private $_createTime;
        
        //static属性规范与实例属性规范一致
        private static $_objectPool;
        
        //只读属性实现
        public function getCreateTime()
        {
            return $this->_createTime;
        }
        //endregion
    
        //region 1.3 方法规范
        //public方法名称使用小驼峰
        public function getInfo($id)
        {
    
        }
    
        //static方法规范与实例方法规范一致
        public static function getDb()
        {
    
        }
    
        //protected方法以下划线开头,单词遵从小驼峰
        protected function _formatInfo($info = [])
        {
    
        }
    
        //static方法规范与实例方法规范一致
        protected static function _getData($key)
        {
            
        }
    
        //private方法以下划线开头,单词遵从小驼峰
        private function _initSource()
        {
    
        }
    
        //static方法规范与实例方法规范一致
        private function _getObject($key)
        {
            
        }    
        //endregion
    }
    

    好了,看到这里你已经掌握了PSR-1规范的大部分内容了,你离大神的距离又近了一步了哦!加油!

    学习更多内容: https://404.360tryst.com

    我的视频课程: https://edu.csdn.net/course/detail/9933

    展开全文
  • 编码规范——华为篇

    千次阅读 2020-06-14 11:30:52
    编码规范很重要,其实他直接影响到了代码迭代更新的效率和出问题的概率。以下为本人对网上广为流传的华为编码规范的个人总结。(ps:其中有几个原则实在是精辟的不能再精辟了,当然也有一些存在疑惑,还希望各位大佬...
  • Java编码规范总结(腾讯+阿里)

    万次阅读 2019-05-06 20:28:03
    Java编码规范总结(参考腾讯编码规范) 一、java文件组织 文件组织规则:由于超过2000行的程序难以阅读,应该尽量避免出现超过2000行的程序。一个Java源文件都包含一个单一的公共类或接口。若私有类和接口与一个...
  • Python PEP8 编码规范中文版

    万次阅读 多人点赞 2018-01-02 19:21:09
    Python PEP8 编码规范 中文
  • 获得阿里巴巴编码规范技能认证

    万次阅读 2019-12-11 16:19:49
    【前言】 通过对阿里巴巴Java开发手册的学习与总结,今天进行了阿里巴巴举办的在线认证考试,并最终通过认证。 【认证过程】 1、学习资料: ... (1)在线---阿里巴巴Java开发手册终极版v1.3.0.pdf ...
  • Java编码规范

    千次阅读 多人点赞 2014-03-14 10:25:30
    先借编码规范之名,行吐槽之实,抱歉。 写干净整洁的代码 阅读代码,眼缘很重要。代码是程序员的脸,保持干净整洁。 记得格式化代码。 建议使用eclipse默认的就行,Ctrl+Shift+F。项目内部格式化风格一定要统一,...
  • C语言编码规范汇总篇

    千次阅读 多人点赞 2020-06-16 10:13:05
    C语言编码规范 1--文件与目录 1、文件及目录的命名规定可用的字符集是[A-Z;a-z;0-9;._-]。 2、源文件名后缀用小写字母.c和.h。 3、文件的命名要准确清晰地表达其内容,同时文件名应该精练,防止文件名过长而...
  • Android开发编码规范

    千次阅读 2019-09-29 13:03:18
    编码规范对于程序员而言尤为重要,有以下几个原因: 【原因1】一个软件的生命周期中,80%的花费在于维护。 【原因2】几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。 【原因3】编码...
  • Python 编码规范

    千次阅读 2018-10-26 21:15:43
    软件行业现在基本上是协同工作,不再是以前个人单打独斗的年代了。在一个团队中,每个人可能负责一个或者多个模块。...网上有许多的编码规范,我介绍分享几个知名编码规范给大家参考学习。   PEP 8 ...
  • python编码规范

    千次阅读 2019-10-28 19:57:46
    一、python编码规范: (一)代码编码: 1、国际惯例,文件编码和 Python 编码格式全部为 utf-8 ,例如:在 Python 代码的开头,要统一加上 # -- coding: utf-8 --。 2、Python 代码中,非 ascii 字...
  • 软件编码规范

    千次阅读 2001-07-03 17:25:00
    软件编码规范前言: 通过建立代码编写规范,形成BCB 开发小组编码约定,提高程序的可靠性、可读性、可修改性、可维护性、一致性,保证程序代码的质量,继承软件开发成果,充分利用资源。提高程序的可继承性,使开发...
  • Java编码规范注意

    千次阅读 2016-09-08 13:14:15
    编码规范对于开发人员来说是非常重要的,有以下几个原因: 1.一个软件的生命周期中,80%的花费在于维护 2.几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护 3.编码规范可以改善软件的...
  • C#编码规范

    千次阅读 2016-07-19 22:13:48
    C#编码规范 1 规范目的 ……………………………………………………… 3 2 适用范围 ……………………………………………………… 3 3 代码注释 ……………………………………………………… 3 ...
  • google编码规范

    2018-09-25 10:56:02
    https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/
  • Verilog编码规范

    千次阅读 2017-05-18 21:06:54
    Verilog编码规范工程结构顶层模块使用原理图设计,看起来更直观。其余各子模块用Verilog书写,书写完成后封装成模块,以便让顶层模块调用。二级及以下子模块不必封装,直接被上级模块调用即可。代码格式文件头/*****...
1 2 3 4 5 ... 20
收藏数 335,843
精华内容 134,337
关键字:

编码规范