这是我参与「第五届青训营 」伴学笔记创作活动的第 5天
简介
编写的代码能够达到正确可靠、简洁清晰的目标才能称之为高质量代码,编写所谓的高质量代码应该注意以下几点
- 各种边界条件是否考虑完备
- 异常情况处理、稳定性保证
- 易读易维护
编程原则
简单
何为要求编程简单的原则,下面我们通过二个代码例子来进行比对
获取当前的星期
public class test {
public static void main(String[] args) {
Date date = new Date();
String s = date.toString();
System.out.println(date.getDay());
}
}
获取当前的星期+
public class test {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.getDay());
}
}
也就是说这二个代码其实差别看起来并不是太大,唯一的就是少了一行代码,就是代码的冗余性问题,因为第一个例子的第二行代码并没有利用到,所以说要尽量的优化和简单,不要有冗余的问题。
可读
下面我依然举例子说明一下可读性的重要性,例如像下面的java代码,我并没有进行任何的注释,甚至格式也有点不好看
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
//BigInteger res=new BigInteger("0");
int count = 0;
if (N < 10000) {
for (int i = 1; i <= N; i++) {
//res= BigInteger.valueOf(i*i*i);
for (int j = 1; j <= i*i*i; j++) {
String sum= String.valueOf(i*i*i);
String num= String.valueOf(j*j);
if (sum.equals(num)) {
count++;
System.out.println(i + "*" + i +"*"+i +"=" + i*i*i+"="+(j * j) + "=" + j + "*" + j);
break;
}
//break;
}
}
System.out.println(count);
}
}
这种代码我相信各位读者看着就是一脸懵逼,因为确实很懵逼,不知道要这串代码是要做什么事情,甚至看着看着可能就会打瞌睡等等,可读性是十分的差,所以代码需要有一定的可读性例如下列代码
public class HelloWorldSwing {
/**{
* 创建并显示GUI。出于线程安全的考虑,
* 这个方法在事件调用线程中调用。
*/
private static void createAndShowGUI() {
// 确保一个漂亮的外观风格
JFrame.setDefaultLookAndFeelDecorated(true);
// 创建及设置窗口
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 添加 "Hello World" 标签
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
// 显示窗口
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
// 显示应用 GUI
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
这个我估计一看就知道其实就是生成一个GUI的应用,用的java_swing来进行展示,这样一看就懂,甚至可能读者在需要学习的时候只需要看自己需要的部分,从而提高学习效率。
生产力
生产力实则看的就是一个工作效率,希望别人做一件事情的时候自己可以做很多事情,那么如何提升生产力呢,根据软件工程的概念,需求分析、概要设计、详细设计、编码、测试等一样都不要少,按照流程一步一步来,总体的效率就会有所提高。
编码规范
代码格式
例如go语言,代码格式我推荐使用gofmt自动格式化代码,
gofmt
go语言官方提供的工具,能自动格式化go语言代码为官方统一的风格常见的IDE都支持方便配置
goimports
也是go语言官方提供的工具,实际等于gofmt加上依赖包管理,自动增删依赖包引用、将依赖包按字母排序并分类
注释
go语言的注释代码
合适注释公共符号,来解释代码的作用
例如
- 按照这样的公共注释规范来编写代码
- 注释代码的实现过程
- 注释代码这样实现的原因
- 注释代码什么情况下可能出错
- 公共符号要求注释
总结:代码是最好的注释,注释应该提供代码没有表达出上下问的信息
命名规范
变量命名:命名尽量的简洁,缩写词全部大写、全局变量在其名字中需要根本更多的上下文信息、使得在不同的地方可以轻易辨认出意思
函数命名:函数名不携带包名上下文信息,因为包名和函数名总是成对出现的、函数名尽量简短。
包类命名:只由小写的字母组成、不包含大写字母和下划线字符等、简短并包含一定的上下文信息、不要与标准库同名。
控制流程
- 避免嵌套,保持正常流程清晰例如
- 尽量保持正常代码路径为最小缩进
总结:线性原理、处理逻辑尽量走直线、避免复杂的嵌套分支,正常流程代码沿着屏幕向下移动、提升代码可维护性和可读性,故障问题大多出现复杂的条件语句和循环语句中。
个人总结
go语言的编码规范其实和很多编码规范大同小异,可以借鉴其他语言的编程原则来约束go语言