Java软件编码规范要求

1.一个类对应一个文件,文件名与类名保持一致

虽然一个“.java”源文件可以有多个类(不是内部类),但是不提倡那么写。

2.今天在写代码的时候无意间发现了 if 和 else 后面不用带括号

if (Boolean)
         true
else
         false

有大括号的时候
大括号里面所有的 都归if管。只有条件为真的时候 才会执行。
没有大括号的时候 只有下面的一句归if管,

也就是说 当只有一句的时候 大括号可以省略 其它的 没区别。

这种情况,没多久就忘了,再记录一次,加深印象。不然读代码的时候让人很疑惑。

java规范里面很多都有这样的要求: if后面即使只有一句也都要使用大括号,不只是直观,很多时候能帮我们避免很多错误。以后编程一定要尽量根据规范进行。

详见:if else等语句,什么时候可以不加括号

 3.在删除某个类时候,一定别忘记把对应的import也删除掉:

可以手动删除,也可以 Ctrl+Shift+O快捷键自动删除和导入。

4.禁止使 引入整个包的  import java.io.*;

①这样虽然方便,但是当导入包中所有的类时,java编译器就会用额外的内存来存储包中类和方法的名字,以便跟踪这个包中所有的元素,这在pc机上没有太大的性能差异。然而当在手持设备上,一般的手持设备内存都比较小,这种方式就不太好了,更适合第一种方式想引用哪个类就具体引用哪个

②当通过网络远程加载一个类时,如果它导入了一包中所有的类,那么在加载的时候就会把所有的类和方法加载到本地来,这就会造成java程序执行时间上的延迟。

所以只有当需要导入这个包中很多类的时候,再用这种方式。

扩展:在同一包中的类可以互相引用,无需import语句(非要手动加入也不会报错)
注意:java.lang包是自动引入的,不需要显式的加import引入。因此可以直接引用System、String 

扩展阅读:Java import的作用 :https://www.cnblogs.com/lukelook/p/12834940.html

避免使用静态导入

static import这么叼那它有什么负面影响吗?

答案是肯定的,去掉静态成员前面的类型名,固然有助于在频繁调用时显得简洁,但是同时也失去了关于“这个东西在哪里定义”的提示信息,理解或维护代码就呵呵了。
但是如果导入的来源很著名(比如java.lang.Math),这个问题就不那么严重了。

按需导入机制
使用按需导入声明是否会降低Java代码的执行效率?

绝对不会!

一、import的按需导入

import java.util.*;

public class NeedImportTest {
public static void main(String[] args) {
ArrayList tList = new ArrayList();
}
}

编译之后的class文件 :

//import java.util.*被替换成import java.util.ArrayList
//即按需导入编译过程会替换成单类型导入。
import java.util.ArrayList;

public class NeedImportTest {
public static void main(String[] args) {
new ArrayList();
}
}

二、static import的按需导入

import static com.assignment.test.StaticFieldsClass.*;
public class StaticNeedImportTest {
public static void main(String[] args) {
System.out.println(staticField);
staticFunction();
}
}

上面StaticNeedImportTest 类编译之后 :

/可以看出 : 
//1、static import的精准导入以及按需导入编译之后都会变成import的单类型导入
import com.assignment.test.StaticFieldsClass;

public class StaticNeedImportTest {
public static void main(String[] args) {
//2、编译之后“打回原形”,使用原来的方法调用静态成员
System.out.println(StaticFieldsClass.staticField);
StaticFieldsClass.staticFunction();
}
}

附加

这是否意味着你总是可以使用按需导入声明?
是,也不是!

在类似Demo的非正式开发中使用按需导入声明显得很有用。

然而,有这四个理由让你可以放弃这种声明:

编译速度:在一个很大的项目中,它们会极大的影响编译速度.但在小型项目中使用在编译时间上可以忽略不计。
命名冲突:解决避免命名冲突问题的答案就是使用全名。而按需导入恰恰就是使用导入声明初衷的否定。
说明问题:毕竟高级语言的代码是给人看的,按需导入看不出使用到的具体类型。
无名包问题:如果在编译单元的顶部没有包声明,Java编译器首选会从无名包中搜索一个类型,然后才是按需类型声明。如果有命名冲突就会产生问题。

Sun的工程师一般不使用按需类型导入声明.这你可以在他们的代码中找到:
在java.util.Properties类中的导入声明:

import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.security.AccessController;
import java.security.PrivilegedAction;


可以看到他们用单类型导入详细的列出了需要的java.io包中的具体类型。

posted @ 2018-08-30 10:38  Rooker  阅读(795)  评论(0编辑  收藏  举报