【编程基础第十一讲】代码如何写才最漂亮第一篇

存在问题:

好多小伙伴对编码的格式作用模糊,以为只要完成功能就行,其实这种观点是错误的,一定要重视代码规范,不然你哭的地都找不到。

如何实施:

良好的代码开发习惯对人对己都是非常有用的,良好的代码开发习惯包括,方法封装的独立性,注释添加的合理性,代码布局书写的工整性,当然这些东西没有写的很好也不影响程序的编译与运行,也就是说在初期开发的时候是不受什么影响的,但是对于后期的维护与他人的对你的代码维护就能显示出这方面的重要性了;

今天主要跟大家分享一下一个在程序员这个地方一种公认的书写规范,可以说总结的还是相对全一些的,希望可以对大家有帮助,篇幅可能有点长,如果一篇文章写不完,我会把部分内容放到第二篇中;

一、代码变量命名规范

1),通用的变量:循环loop,计数count,累加sum

2)、与功能相关:

用于记录数据_reg (register:记录),

标志位_flag

注解:如果需要用到这样功能的,描述放到变量名之后,例如***_flag,***_reg

3)、与范围相关:全局变量 g

局部变量 local —— l

静态变量 static —— s

被外部引用 extern —— e

例: 全局变量 :g***,局部变量:l***,静态变量:s***, 被外部引用:e***;

注解:静态变量只能出现在局部变量里,被外部引用只能出现在全局变量里,所以对于一个变量而言,此处与范围相关的描述只能有一种可能。

4)、数据类型:bool —— b

byte —— by

float —— f

double —— d

char —— c

int —— i (如果变量类型有unsigned的,在描述符后加上u,例iu)

结构体变量 —— s (例如struct Long_Time ls_timer,局部结构体变量)

例: bool :b***,byte:by***,float:f***, double:d***,char:c***,int:i***,int unsigned:iu,结构体变量:s***;

注解:此处结构体变量与静态变量都用s描述,只是描述等级不一样(描述等级为一个变量首先要反映出来的信息描述为最高!),而且不能用静态方式定义结构体变量的,结构体变量只有全局或局部之分

5)、指针的描述放到所有描述之前(如果用到指针的话)

指针 —— p

二重指针 —— pp(以此类推)

注解:例如int *pli_timer=&gi_sum;

变量命名公式:变量名=范围描述+数据类型+变量名英文释义

6)、命名中若使用特殊约定或缩写,则要有注释说明

注解:应该在源文件的开始之处,对文件中所使用的缩写或约定,进行必要的注释说明

7)、自己特有的命名风格,要自始至终保持一致,不可来回变化(最好整理一个说明的文档的,方便别人的理解);

二、代码格式书写规范

1)、程序块要采用缩进风格编写(缩进空格以source singht的一个“Tab”键为基准,四个字节)

public test(){

****//语句块

}

2)、定义所有局部变量后需要加个回车空行

private int i;

//、空行

private int j;

3)、一行只写一条语句,即不允许把多个短语句写在一行中

4)、if、for、do、while、case、switch、default等语句自占一行,且无论执行语句的多少都要加括号{ },且程序块的分界符‘{’和‘}’应各独占一行并且位于同一列,同时与引用它们的语句左对齐。

注解:形如if(*********)

return 0;

5)、if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出明显

6)、if语句尽量加上else分支,对没有else分支的语句要小心对待;switch语句必须有default分支

7)、逗号、分号只在后面加一个空格

注解:例如for(loop=0; loop<100; loop++)或int loop=0, num_reg=0;

8)、比较操作符, 赋值操作符"="、 "+=",算术操作符"+"、"%",逻辑操作符"&&"、"&",位域操作符"<<"、"^"等双目操作符的前后加空格

注解:例如 if (current_time >= MAX_TIME_VALUE)

a = b + c;

a *= 2;

a = b ^ 2;

9)、"!"、"~"、"++"、"--"、"&"(地址运算符)等单目操作符前后不加空格(例如i++)

10)、"->"、"."前后不加空格

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-11-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

Java面试宝典

允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点:

24020
来自专栏不止是前端

从实现一个Promise说起

尽管工作中用了无数次Promise async await,但是在写下这篇文章之前,却不知道Promise背后发生了些什么,我一直以为的逻辑是先等待Promis...

17640
来自专栏恰童鞋骚年

你必须知道的指针基础-8.栈空间与堆空间

一个由C/C++编译的程序占用的内存分为以下几个部分:  1、栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于...

6520
来自专栏Python攻城狮

Python数据科学(二)- python与数据科学应用(Ⅱ)1.Python3 语法之for循环、if分支语句2.函数3.导入模块4.Jupyter notebook内代码的保存与分享5.数据科学实

使用Jupyter notebook文档写好之后, 保存成为一般的.ipynb的格式, 但是也可以保存成其他的格式, 如: Python(.py), Markd...

8720
来自专栏nnngu

015 反射中的 Class.forName() 与 ClassLoader.loadClass() 的区别

Class.forName() 与 ClassLoader.loadClass() 大家都知道是反射用来构造类的方法,但是他们的用法还是有一定区别的。 在讲区别...

26630
来自专栏C/C++基础

将模板申明为友元

严格来说,函数模板(类模板)是不能作为一个类的友元的,就像类模板之间不能发生继承关系一样。只有当函数模板(或类模板)被实例化之后生成模板函数(或模板类),该函数...

10210
来自专栏令仔很忙

理解javascript作用域和作用域链

作用域就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期,在JavaScript中变量的作用域有全局作用域和局部作用域。

72810
来自专栏我的博客

php使用elasticsearch

1.引入包 composer require elasticsearch/elasticsearch 2.DEMO参考 <?php require_once ...

44970
来自专栏九彩拼盘的叨叨叨

ES6 之 Proxy 介绍

Proxy(代理) 是 ES6 中新增的一个特性。Proxy 让我们能够以简洁易懂的方式控制外部对对象的访问。其功能非常类似于设计模式中的代理模式。

10930
来自专栏达摩兵的技术空间

es6入门

es6作为最新的js语言版本,有很多特性是不得不晓的。下面将语法中常用的分析出来,对应到基本对象类型的会在对象里描述。

9520

扫码关注云+社区

领取腾讯云代金券