`
lalanicer
  • 浏览: 29989 次
社区版块
存档分类
最新评论

基础编码规范

 
阅读更多

关于专业

程序如同一本小说,写出来是给人阅读的,包括作者自己。一本结构清晰、逻辑严密、富含人生哲理的小说阅读起来让人折服。相反,一本头重脚轻、错漏百出、只为赚钱而胡乱拼凑起来的小说阅读起来味如嚼蜡。同样的,对于程序员来说,排版整洁、注释清晰、算法合理的代码阅读起来让人舒畅,而缩进不一、命名拙劣、只有编译器才能读懂的代码阅读起来让人痛苦。和作家写小说、音乐家作曲、建筑师画设计图、导演拍电影一样,程序员编写代码应该具备专业精神,把程序当成是自己的艺术作品来看待。

 

入乡随俗

每一种编程语言都有她自身语法规则,程序员在使用该语言的过程中,会慢慢形成一些约定俗成的习惯。这些习惯包括变量的命名和函数方式、缩进的风格等。但往往这些习惯是只适合于该语言,如果一个新手在学习 B 语言的时候,把他原来熟悉的 A 语言的习惯直接套上去,那么大部分使用 B 语言的程序员看上去会觉得非常别扭,有些时候甚至会造成沟通障碍。所以当我们学习一种新的编程语言的时候,在学习其语法的同时,也建议多阅读这门语言的经典代码,慢慢了解这些习俗,不要把其他语言的习惯照搬进来。

 

排版

排版的要求主要分成宏观排版和微观排版两种。

 

宏观排版

所谓宏观感觉就是读者第一眼看到代码时候的感受。如果代码的缩进统一,相同逻辑快的代码比较紧密,不同逻辑块的代码有所分隔,那么读者单凭这个宏观的排版就基本上可以判断出程序的逻辑结构。另一方面,如果宏观排版整洁,读者会先入为主地认为你的代码写得不错。

 

缩进

统一使用 4 个空格来缩进。不要使用 tab 来缩进。用 tab 来缩进有一个很不好的地方,当相同的代码放到不同的编辑器里面显示,差别可能会很大。因为不同的编辑器可能对 tab 的长度做了不同的定义,有些编辑器设置了用空格来替换 tab,当多个人编辑过同一份代码后,缩进就会变得不统一,整份代码的可读性就会变差。不要使用两个空格来缩进。两个空格很难直观地看出作用域,特别是代码量大了以后。

 

断行

当一个表达式太长的时候就要考虑断行,因为看一行很长的代码很吃力,甚至还要左右滚屏。断行有讲究,如在不恰当的地方断行,会打断读者的思路,更会埋下错误的陷阱。关于在哪里断行合适,有以下几个原则:

  • 在逗号后面断行
  • 在运算符前面断行
  • 尽量不要打断语句

断行后的开始位置要增加一层缩进。如:(Python 语法)

# 好的断行
loooooooooong_method(expr1, expr2,
        expr3, expr4, expr5);
 
# 好的断行
good = a * b / (c - g + f) \ # 注意:保留断行前的空格
        + 4 * z;
 
# 不好的断行
bad = a * b / (c - g \ # 注意:(c - g + f) 这个语句被打断了
       + f) + 4 * z;

 

疏与密

关系紧密的代码行紧靠在一起,关系疏的代码行之间留空行。如:(Python 语法)

def foo():
    # say hello
    print 'Hello World'
 
    # print 1 - 10
    for i in range(10):
        print i + 1
 
    # print 11 - 20
    for i in range(10, 20):
        print i + 1

 

微观排版

这个是指在一行代码里面,变量、括号、运算符等元素的连接方式。

 

一空格原则

当在一行内需要对各个元素进行分隔时,只能用一个空格。举个反例:(Python语法)

def foo():
    print a +  b # 注意:加号后面用了两个空格

 

括号

括号内侧不留空格,举例:(Java 语法)

// 不好的风格
if ( ( a-b ) > 0 ) {
    // ...
}
 
// 好的风格
if ((a-b) > 0) {
    // ...
}

 

流程控制语句

流程控制语句与左括号中间要有一个空格。如:(Java 语法)

import java.util.Stack;
 
public class Test {
    public static void main(String args[]) {
        Stack<Integer> items = new Stack<Integer>();
 
        // 压10个元素进盏
        for (int i = 0; i < 10; i++) { // 注意:for 和左括号之间留一空格
            items.push(i);
        }
 
        // 弹出盏中的各个元素,分单双数打印
        while (!items.empty()) { // 注意:while 和左括号之间留一空格
            int i = items.pop();
            if ((i % 2) == 0) {
                System.out.println("even: " + i);
            } else {
                System.out.println("odd: " + i);
            }
        }
    }
}

 

运算符

二元运算符两端要有一个空格。如:(Python 语法)

def foo():
    print (1 + 2) * 3

 

注释

注释是用来帮助读者了解代码逻辑的,起到提示的作用。注释的使用要合理,过多过少都是不好的。如果注释太少,读者碰到较复杂的算法,或者特殊的业务规则,就会很难理解,读不下去;如果注释太多,把逻辑都用注释写一遍,就会很啰嗦,后面更改逻辑后还要修改注视,维护成本高。 所以注释不要喧宾夺主,大部分时候读者还是阅读代码为主,只在关键的地方其提示作用。下面针对注释提出四点要求:

  • 文件注释:每个文件的头部必须包含对该文件代码的简要说明,必要的情况下要加详细说明。
  • 函数注释:10 行以上的函数前面必须包含对该函数的简要说明,必要的情况下要加参数和返回值的说明。
  • 流程注释:不要把代码片段翻译成注释。如果加了这类注释,每次修改代码的后,要更新对应的注释。
  • 废弃代码:废弃的代码不要用注释的方法保留在文件中。如果保留了,那必须是日后可能会启用的。

 

命名

要考察一个程序员的编码能力,首先要看他的命名水平,因为好的命名是程序可读性的基础。不好的命名有很多种,但好的命名总能让读者顾名思义。下面针对命名提出两点基本要求:

  • 符合英语命名习惯:大部分编程语言都是基于英语的大环境的发展起来的,不论程序员的母语是什么,命名的时候都要尽量使用英语,这样有助于你和世界上大部分程序员交流。要写出符合英语习惯的命名,平时就要多读英语文档,多读优秀程序的源代码,慢慢提高自己的英语基础。
  • 符合该语言命名习惯:每一门主要的编程语言都会有很多程序员使用,这些程序员在平常的交流中会慢慢形成一套符合该语言特性的命名习惯。学习这些命名习惯就是我们学习一门新语言的时候首先要做的事情,而不是将我们之前学过的其他编程语言的名习惯照搬过来。

 

小结

上面列出来的都是最基础的编码习惯,但也是很多程序员在编程多年后都没有形成的习惯。没人能够一步登天,万丈高楼从地起,贝多芬也不是天生就会作曲的,任何一门技术都会有一个苦练基本功的过程。如果我们想我们的编程能力上一个台阶,想在编程领域有所作为,必须扎扎实实地把编码的基本功练好。

分享到:
评论

相关推荐

    java基础编码规范

    ### Java基础编码规范知识点 #### 概述 Java基础编码规范是针对Java开发人员制定的一套规则和标准,旨在提高代码质量、可读性和维护性。遵循这些规范可以帮助开发团队减少错误,提升软件产品的整体质量。 #### ...

    「PSR 规范」PSR-1 基础编码规范1

    《PSR-1 基础编码规范》是PHP开发中的一个重要指南,旨在提高代码的可读性和互操作性。本规范主要涵盖了代码的基本结构、命名规则、文件编码格式以及副作用管理等方面,以确保代码的清晰度和一致性。 1. **PHP代码...

    PHP程序编码规范标准

    ...为了确保代码的可读性、可维护性和团队协作效率,遵循一套...在实际开发中,可以参考PSR(PHP Standard Recommendations)系列规范,如PSR-1基础编码规范和PSR-2编码风格指南,这些都是PHP社区广泛认可的编码标准。

    java、js、html、css编码规范

    在编程领域,编码规范是确保...以上是Java、JS、HTML和CSS的基础编码规范,遵循这些规范可以使代码更加规范、易读,从而提升团队合作效率,降低维护成本。在实际开发中,团队还可以根据自身需求制定更具体的编码规范。

    武汉市空间管理基础网格编码规范

    武汉市空间管理基础网格编码规范,目前我市各管理部门基于政务需要,采用不同标准划分了多种管理分区。本规范建立一套兼顾各部门需求、规范统一的空间管理基础网格,为相关部门构建基本工作单元提供统一的空间基础,...

    Java编码规范.docx

    这些原则是 Java 编码规范的基础,遵守这些原则可以提高代码的可读性和可维护性。 在集合处理中,Java 编码规范规定了对集合的基本操作,如添加、删除、遍历等。这些操作应该遵守一定的规则,以避免代码的混乱和...

    编码规范 华为编码规范 JAVA 华为编码规范 JAVA

    1. **命名规范**:这是编码规范的基础,包括类名、方法名、变量名等应遵循的原则。通常,类名使用全大写字母的驼峰式命名,如`ClassName`;接口名与类名相同;方法名和变量名使用小写字母开头的驼峰式命名,如`...

    Apsara Clouder基础技能认证:阿里巴巴编码规范相关问题总结.zip

    Apsara Clouder基础技能认证:阿里巴巴编码规范手册-java, 本文档找到90%以上的java 认证试题,放心下载,一次通过。

    c++编码规范(华为).rar

    《C++编码规范——华为实践》 在软件开发领域,编码规范是提升代码质量和团队协作效率的重要工具。尤其对于C++这种复杂的编程语言,遵循一套统一的编码规范显得尤为重要。华为作为全球知名的科技公司,其在C++编码...

    阿里巴巴编码规范 基础技能认证 试题分析.zip

    阿里巴巴编码规范 基础技能认证 试题分析 48页包含详细题目与答案阿里巴巴编码规范 基础技能认证 试题分析 48页包含详细题目与答案阿里巴巴编码规范 基础技能认证 试题分析 48页包含详细题目与答案阿里巴巴编码规范 ...

    Android客户端编码规范

    命名规范是编码规范中的基础组成部分,良好的命名习惯可以使代码更加易于理解和维护。 ##### 1. 命名原则 - **使用英文全称**:尽可能使用完整的英文单词进行命名,避免使用过于简化的词汇。 - **避免超长命名**:...

    C# 编码规范 编码规范文档

    ### C# 编码规范详解 #### 一、关于本文档 **1.1 目的** 本文档旨在为C#编程提供一套统一且规范化的编码标准,通过这些规范能够帮助开发者提高代码质量,增强代码的可读性和可维护性。 **1.2 读者及应用范围** ...

    编码规范 程序员的基本素质

    编程是一项需要严谨和精确的工作,编码规范是程序员的基本素质之一,它不仅关乎代码的质量,也影响着团队协作的效率和项目的可维护性。华为作为全球知名的科技企业,其编码规范在业界具有一定的权威性和影响力。这份...

    Web前端编码规范.doc

    命名规范是编码规范中的基础,项目、目录、JS、CSS和HTML文件的命名应采用小写字母,用下划线分隔。HTML规范中,建议使用软tab(4个空格)进行语法缩进,每行字符不宜超过120个。属性使用双引号,单标签不闭合,双...

    JAVA编码规范文档整合阿里巴巴Java开发规范手册

    - V1.0(2019/06/25):创建初版,引入基础编码规范。 - V2.0(2020/05/21):增加单元测试的要求,提高代码覆盖率。 - V3.0(2021/04/15):修订内容和版式,添加安全编码规范。 - V4.0(2022/03/09):补充编程...

    C#编码规范DOCC#编码规范

    命名是代码可读性的基础,C#编码规范对此有严格的要求: - **命名原则**: - 函数、变量和类的名称应反映其实际功能。 - 使用英文命名,避免使用人名和项目组名。 - 不使用下划线连接单词,而是使用驼峰命名或...

    C#软件安全编码规范V2.0.docx

    #### 基础编码规范详解 ##### 捕捉非CLSCompliant异常 **描述** 在C#中,`Exception` 类型可以用来捕获符合公共语言规范(CLS)的所有异常。然而,对于那些不符合CLS的异常(通常源自本机代码或由MSIL汇编程序...

    Java+编码规范+东软编码规范,项目规范

    "Java+编码规范+东软编码规范,项目规范"这个主题聚焦于Java编程中的编码标准和东软公司所推行的项目规范。 东软编码规范是东软集团在长期的软件开发实践中总结出的一套实践指南,旨在提升代码的可读性、可维护性,...

Global site tag (gtag.js) - Google Analytics