JAVA入门教程:(三)编码风格

此章内容不涉及java技术,但是他在编码的过程中有着重要的位置。我想早点把这个东西提出来,以便在以后的编码过程中早日良养成好的编码风格。

为什么要有良好的编码风格?什么是良好的编码风格?

假设我们写的是文章而不是程序,那么你一定觉得诸如文章应该分为若干个自然段、每段开头空两格之类的规则是理所当然的。如果段落的开头不空两格,或者干脆把整个文章写成单独的一段,仔细想来似乎也不会影响文章实质内容的表达。既然如此,我们为什么还要在形式上下功夫呢?设想一下,如果你手中的这本书既无章节也无目录,正文中的不同内容都使用同样的字体字号印刷,几百页纸从头至尾洋洋洒洒如念经般地“一气呵成”,你还有耐心看下去吗?

这是一个人人都能理解的道理,可是当文章变成程序的时候,就不是每个人都能想得通的了。不仅仅是初学者,甚至一些熟练的开发人员,也会写出凌乱不堪的代码。许多人一定有过这样的经历:一年半载之后,自己原来写的程序就完全看不懂了。如果这段程序只是为了交作业,或者临时一用,那还可以不去追究,但如果这是一个商业软件,现在需要根据客户的要求进行修改的话,工作量可就大了——你不得不先花时间把你原来的思路看懂。
肯定会有人反驳:代码是给机器运行的,又不是给人看的,写那么好看有什么用?

这句话只对了前半句:代码确实是给机器运行的,可是机器总共才需要看它几秒甚至只有千分之一秒?你花一个月编写的程序,机器顶多两三秒就编译好了——在这两三秒之前,这代码不都是你在看吗?开发软件编写代码不是一朝一夕的事情,更多的情况下,一个软件的开发要经历很长的时间,并且常常由多人合作完成。一个庞大的软件项目,可能会动用上千名程序员工作数年!如果把代码写得连自己都看不明白,怎么与别人交流?同一个开发团队内,一定要保持良好且一致的代码风格,才能最大化地提高开发效率。

有的初学者会问:我现在只是一个人写程序,并不需要和其他人合作,这些条条框框还有什么必要吗?
要知道,团队协作只是一个方面。我经常遇到这类情况,一些初学者拿着他的程序来说:“这个怎么不能编译?”我帮他把代码整理了半天,发现有一个地方丢了半个大括号。如果他写程序的时候能够稍加注意一些的话,相信此类错误完全可以避免。保持良好的编程习惯,能够避免的错误还远不止这些。
如果说程序代码中对算法的清晰表述是通过长期训练而获得的,那么本章要介绍的这些方法则无需伤神,你不必对代码做任何实质性的改动,只需要添加一些空行与空格,就可以使其可读性大大提高——这些规则就像写文章应该分段一样简单,只要愿意遵守,那么别人在第一眼看你的代码时,必能感觉到你那良好的编程修养,即所谓“见字如见人”。

良好的编码风格就是你的每一行代码看起来时要让人感到清晰,能很容易的就看到其中的语句,假如我把第二节课的代码逻辑与内容不变,只把编码风格改变,就会成这样:

public class Test1{
public static void main(String[]args) {
float a=333.5f;int b=992;int c=1231;int d=2;float sum=a*(b+c/d);
System.out.println("计算333.5 * (992 + 1231 / 2)");System.out.println(sum);System.out.println(a*(b+c/d));
}
}

没有注释,没有合适的段落与缩进,让人很费劲的一个一个字符的去看,虽然代码运行起来完全没有影响,但我们绝对不能这样写代码。

每个人的编码风格都会有一定的迥异,作为一名初学者,我建议先不要去创造自己的编码风格,先要去模仿已有的代码的风格,等你有了一个良好的风格之后,再去想别的。

我的编码风格是从以前的一个公司学到的,整个项目组在提交代码前都会对代码做各种校验,如风格、圈复杂度。我一直使用这套规范,下面我就说下这个编码风格的具体规则。

1、不同层级之间用table键缩进。你可以看我前两章的代码,花括号里面的代码总是比上层代码多一个table,同级的代码保持相同的缩进。

2、符号、关键字之间需要一个空格。

3、方法、类之后的“{”需要换行。

4、相同结构或功能连续的语句不需要换行,否则需要换行。

5、必要的语句需要加注释,但不是每一行都加。比如我定义int a = 1; 这句话每个人都能看懂,如果我非要加上注释,如://定义一个整型变量a,就显得很罗嗦了。

6、尽量定义有意义的变量名。我在之前的代码中,总是定义a、b、c这样的,其实是不好的。有意义的比如temp(临时变量,约定成俗的名字,一般不需要注释 )、totalCount(总数量)、sum(和)之类的,或者用汉语拼音可以,但最好不要缩写, 假如你要定义“小明的年龄”,可以int xiaoMingNianLing或int xiaoMingAge,但是不要拼音缩写成int  xmnl,这样除了你,谁也看不懂,或许过一天连你都看不懂了。另外多说一句,命名方法、或者变量的时候,需要“驼峰命名法”,就是首字母小写,其他每个单词的首字母大写。命名类名的时候,每个单词的首字母都需要大写,变量名不能用java关键字,如int public = 1;float int = 2.3f;long class 333322l; int for =3;这些都是不合法的。

下面这个代码综合上面的6点。

public class Test1 {
	
	public static void main(String[] args) {
		
		int a = 1;
		int temp = 2;
		int totalCount = 3;//总数量
		
		for (int i = 1; i < 5; i ++) {
			for (int j = 1; j < 5; j ++) {
				
			}
		}

		System.out.println(a);
		System.out.println(temp);
		System.out.println(totalCount);
	}
}

假如你搜过编码风格,会发现有讨论缩进是“用4个空格还是用table”的讨论。别管他怎么说,你就用table就好。

作业:

把下面的代码按照本章所讲的风格重新编排。

import java.util.Scanner;

/**
 * 这是一个输入两个数字计算加法的程序
 */
public class jisuanjiafa
{
	
public static void main(String[] args)
	{
Scanner s = new Scanner(System.in);
System.out.println("请在Console中请输入一个数字,并按回车");
float a=s.nextFloat();//第1个数字
System.out.println("请在Console请输入一个数字,并按回车");
float b=s.nextFloat();
float c = a+b;
System.out.println("和为:" + c);
}
} 

上节作业答案:

1、(图1)

(图2)

 

(图3)

图1,因为定义的都是整型,乘积结果大于了int范围,所以“溢出了”,显示了错误的结果。

图2,乘积结果在float范围之内,可以正确显示结果。

图3,因为有long,自动把int转为了long,计算的乘积在long范围之内,所以结果正确。

2、

因为计算机本身是二进制的,而浮点数实际上只是个近似值,所以从二进制转化为十进制浮点数时,精度容易丢失,导致精度下降,就像十进制无法准确的表示1/3一样。下面例子的也一样。不过你可以放心的加、减、乘、除不带小数点的数字。

不过你不用担心,java提供了其他的方法可以精确的计算这个数字,以后会讲到。

3、

红线框起来的:大写D与小写d都行,同样的F与f,L与l都可以。数字可以用科学计数法表示,同样的大写E与小写e都可以。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值