发表于: 2017-06-20 20:58:24

1 1088


今天完成的事情:学习了一下阿里巴巴Java开发手册,学习IO流

下面几点自己很有感受

1.【强制】POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。 反例:定义为基本数据类型boolean isSuccess;的属性,它的方法也是isSuccess(),RPC 框架在反向解析的时候,“以为”对应的属性名称是 success,导致属性获取不到,进而抛出异常。 

看法:自己就踩了这样的坑深有体会。

 

2.【强制】杜绝完全不规范的缩写,避免望文不知义。

反例: AbstractClass“缩写”命名成 AbsClass;condition“缩写”命名成 condi,此类 随意缩写严重降低了代码的可阅读性。

看法:非常赞同,在项目代码中看到不能一眼看出含义的拼音或者英文缩写比如cashFlow缩写为CF,代码可读性降低很多。Java代码不要害怕变量名或者方法名过长,除非你能找到一个比原先短,并且含义完全相同的更好的命名。


3.【推荐】不要使用一个常量类维护所有常量,应该按常量功能进行归类,分开维护。如:缓存 相关的常量放在类:CacheConsts 下;系统配置相关的常量放在类:ConfigConsts 下。 说明:大而全的常量类,非得使用查找功能才能定位到修改的常量,不利于理解和维护。 

看法:挺好的规范,对于大型项目,按照业务功能/模块常量类分开维护还是很有必要的。


4.接口和实现类的命名有两套规则: 

 1)【强制】对于Service和DAO类,基于SOA的理念,暴露出来的服务一定是接口,内部  的实现类用Impl的后缀与接口区别。  正例:CacheServiceImpl实现CacheService接口。

 2)【推荐】 如果是形容能力的接口名称,取对应的形容词做接口名(通常是–able的形  式)。  正例:AbstractTranslator实现 Translatable。


5.【强制】long或者Long初始赋值时,必须使用大写的L,不能是小写的l,小写容易跟数字1  混淆,造成误解。  

说明:Long a = 2l; 写的是数字的21,还是Long型的2?


IO流

(1)IO用于在设备间进行数据传输的操作

(2)分类:

        A:流向

           输入流 读取数据

           输出流 写出数据

        B:数据类型

           字节流

           字节输入流

           字节输出流

           字符流

           字符输入流

           字符输出流

注意:

        a:如果我们没有明确说明按照什么分,默认按照数据类型分。

        b:除非文件用windows自带的记事本打开我们能够读懂,才采用字符流,否则建议使用字节流。

(3)FileOutputStream写出数据

A:操作步骤

a:创建字节输出流对象

b:调用write()方法

c:释放资源

B:代码体现:

          FileOutputStream fos = new FileOutputStream("fos.txt");

          fos.write("hello".getBytes());

          fos.close();

C:要注意的问题?

         a:创建字节输出流对象做了几件事情?

         b:为什么要close()?

         c:如何实现数据的换行?

         d:如何实现数据的追加写入?

(4)FileInputStream读取数据

A:操作步骤

    a:创建字节输入流对象

    b:调用read()方法

    c:释放资源

B:代码体现:

FileInputStream fis = new FileInputStream("fos.txt");

//方式1

int by = 0;

while((by=fis.read())!=-1) {

System.out.print((char)by);

}

//方式2

byte[] bys = new byte[1024];

int len = 0;

while((len=fis.read(bys))!=-1) {

System.out.print(new String(bys,0,len));

}

fis.close();

(5)案例:2种实现

A:复制文本文件

B:复制图片

C:复制视频

(6)字节缓冲区流

A:BufferedOutputStream

B:BufferedInputStream

(7)案例:4种实现

A:复制文本文件

B:复制图片

C:复制视频

3:自学字符流

IO流分类

字节流:

InputStream

FileInputStream

BufferedInputStream

OutputStream

FileOutputStream

BufferedOutputStream

字符流:

Reader

FileReader

BufferedReader

Writer

FileWriter

BufferedWriter


明天计划的事情:回校拿毕业证

遇到的问题:io流只是看了个大概对如何实现数据的换行和追加写入没有掌握

收获:学习了代码规范和学习IO流


返回列表 返回列表
评论

    分享到