前言:
- 对于代码初学者而言,大多并不会注意代码整洁问题。一方面是初学者需要编写的功能较为简单并且接触的代码比较少,更不谈及与其他代码编写者合作的问题,因此常常认为只要能够实现功能即可;另一方面,又少有教学者严格要求加以引导。这个问题便会一直积攒到后来他们不得不修改自己已经养成的恶习时才加以修正,一个普遍的事实就是在编写代码这件事上,不在意代码整洁的人不在少数。
- 简洁的代码好处良多:
- 在后期代码需要实现功能繁多的情况下,一命通关几乎是不存在的情况,所以这些代码都是需要编写者,也就是我们自身加以维护的。简洁的好处就是能让我们更快且清楚地明白自己所写的代码含义,使我们快速对其进行修改和维护。
- 后期的代码编写经常涉及多人合作实现代码功能的情况,因此,代码除了自己看懂以外更需要让别人也看得懂。前面对自己来说的好处对别人来说也同样适用,不多提及。除了以上,两个不同的人编写代码习惯不一定相通,所以让其他人明白自己写的东西就尤为重要。
合理给标识符命名
-
驼峰命名法
代码起名一般主要使用英语命名,因此为了将名称中的单词区分开来,一般使用时会在下一个单词处使用下划线、大小写区分。 -
见名知意
标识符的命名要写的尽可能简短,并且名称也要尽可能有意义,需要能够描述出它所对应的功能。
遵循代码书写规范
该方面要求较多,详细可参考社区“技能书”下内容,以下简单写出两个:
-
在代码中出现包含结构时,被包含的所有代码距离开头额外增加一个制表符(或四个空格)的距离。以我们常见的hello world为例:
public class demo { public static void main(String[] args) { System.out.println("Hello world!"); } }
在该代码中,类包含方法,方法又包含内部的代码,所以方法需要向前隔一个制表符的距离,而内部代码需要隔两个制表符距离。这样写下来代码才能让人更容易看懂。
-
写括号时最好一次性先把一对括号写出来,然后再在里面写内容,这样能减少因为少打括号而在维护时浪费的时间。
- 这里顺便给大家推荐一个我平常使用的小插件:
- Rainbow Brackets
- 这个插件会把对应的括号变成相同的颜色变与观看,同时增加美观性,像是这样:
使用方法、类
- 遇到经常使用的部分代码时可以将其抽出来使用一个方法抽离出来,在调用时,直接使用方法的名称即可。(java)例:
hello(); ... public static void hello(){ System.out.println("Hello world!"); }
- 代码复杂时,创建一个类可以使代码更为简单。使用面向对象可以在该对象也就是新创建的类中编写自己需要使用的方法及属性。把原先一整块的代码切分开来,代码逻辑便于梳理,易于维护。例:
class Character{
private String name;
...
public static void sleep(){
System.out.println(getName() + "睡觉");
}
}
添加注释
在一些变量,方法或类上添加注释可以让后期编写者去看代码时,便于理解和维护。(java)例:
/*
该类用于创建一个角色对象使用
*/
class Character{
//实例角色1名称
private String name;
...
//睡觉方法
public static void sleep(){
//getName()为获取到本类的name属性
System.out.println(getName() + "睡觉");
}
}
简洁多余的代码
在实现部分的代码基础功能之后,不用着急去完成下一个功能,在原先代码上可以先加以检查,之后再把一些重复的代码简化,抽出常用的字符串或数字等改为变量,之后再去实现其他功能。(java)例:
//简化前:
System.out.println("zhangsan");
...
System.out.println("zhangsan");
...
System.out.println("zhangsan");
//简化后:
String name = "zhangsan";
System.out.println(name);
...
System.out.println(name);
...
System.out.println(name);