工作的这一年里。总倾向于去学习一些分布式、大数据方面的知识,了解了Hadoop、HBASE、kafka、spark、redies、ELK等涉及大数据的开源项目。但当看到源码时,很多时候总不知所云。不懂其代码结构为何如此,导致理解起来吃力。直到看到了一篇文章,上面提供了一些程序员循序渐进的建议:工作一年左右,开始写博客,最好从《大话设计模式》开始。设计模式是什么?当时我问自己,设计模式对我而言,似乎是熟悉而又陌生的。好像曾经有想要去了解,但却没深入了解,只是在遇到某种设计模式时,去查阅相关资料罢了。
然而,我开始了《大话设计模式》之旅。看了前两章时,感觉挺有意思的,并不像是看一些技术书一样,反而觉得是在看小说,非常建议初学设计模式的朋友看学习,一开始讲述都是一些比较基础的,初学开发者有时候会忽略的小问题,然,问题虽小,很多时候,代码的可读性,可理解性就在于这些小问题上面。
于是乎,我便开始了《大话设计模式》之旅----
1. 那什么是设计模式?设计模式有什么作用?
- 这里是列表文本设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解、保证代码可靠性。
2. 代码的规范
- 首先要注意注释文档的格式,注释文档将用来生成HTML格式的代码报告,所以注释文档必须写在写在类、域、构造函数、方法、定义之前。注释文档由两部分组成----描述、块标记。
* ...
* @ param (classes, interfaces, methods and constructors only)
* @ return (methods only)
* @ exception (@throws is a synonym addad in Javadoc 1.2 )
* @ author (classes and interfaces only, required )
* @ version (classes and interfaces only, required. See footnote I)
* @ see
* @ since
* @ serial (or @serialField or @serilData)
* @ deprecated (see How and When To Deprecate APIs)
* ...
以上为注释块标记的顺序。一个快标记可以根据需要重复出现多次,多次出现的标记按照如下顺序:
@ author 按照时间先后顺序
@ param 按照参数定义顺序
@ thrown 按照异常名字的字母顺序
@ see 按照如下顺序
@ see #field
@ see #Constructor (Type, Type ...)
@ see #Constructor (Type id, Type id ...)
@ see #method (Type, Type...)
@ see #method (Type id, Type id ...)
@ see Class
@ see Class#field
@ see Class#Constructor (Type, Type)
@ see Class#Constructor (Type id, Type id ...)
@ see Class#method (Type, Type)
@ see Class#method (Type id, Type id...)
@ see package.Class
@ see package.Class#field
@ see package.Class#Constructor (Type, Type...)
@ see package.Class#Constructor (Type id, Type id...)
@ see package.Class#method (Type, Type...)
@ see package.Class#method (Type id, Type id)
@ see package
标记介绍
@ param 标记
@ param 后面空格后跟着参数的变量名字(不是类型),空格后跟着对该参数的描述。描述第一个名字为该变量的数据类型,表示数据类型的名字前可以有一个冠词:a , am, the。如果是int 类型的参数,则不需要注明数据类型,
...
*@ param ch the char 用用来。。。
*@ param _ image the image 用来。。
*@ param _ num 一个数字。。。
...
3. 初学代码者常犯的错误
- 主要包括语法错误和逻辑错误。语法错误,也就是我们的编码不符合java规范,在编译时无法通过。逻辑错误,也就是我们常说的Bug,一般存在逻辑错误的程序都可以顺利的被编译器编译产生相应的字节码文件,也就是class文件。但这行的时候,也就是java ourClass的时候,得出的结果并不是我们所希望的。
4. 面向对象
- 面向对象 OO = 面向对象的分析 OOA + 面向对象的设计 OOD + 面向对象的变成 + OOP; 通俗的解释就是万物皆对象,把所有的事务都看作一个个可以独立的对象(单元),它们可以自己完成自己的功能,而不是像C那样分成一个个函数;现在纯正的OO语音主要是Java 和 C# , C++ 也支持 OO, C是面向过程的。
5. 面向对象的特征
6. 面向对象的优势
- 符合人们习惯的思维方法,便于分解大型的复杂多变的问题
- 易于软件的维护和功能的增减
- 可重用性好
- 与可视化技术相结合,改善工作界面
7. Java 优点
- 与平台无关
- Java的类C++语法
- 面向对象
- 健壮 ,Java自己操纵内存,减少内存存错的可能性。
- 安全 ,Java语言里,象指针和释放内存等C++功能被删除,避免了非法内存操纵,另一方面,当Java用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来,使它更安全。
- 多线程
- 动态
8. 类、对象、方法和实例变量
- 类:是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。是对一组事物的抽象,是对事物的特性和功能的描述。
- 对象:是类的实例,即类的变量。
- 方法:实现对象所具有的功能操作的代码
- 实例变量:某一实现具有的状态,比如说圆的半径,汽车的颜色。
9. 继承
- 继承是指一个对象直接使用另一个对象的属性和方法。
10. 接口
- 接口用来定义一种程序的协定,实现接口的类或结构要与接口的定义严格一致,接口可以从多个接口继承,而类或结构可以实现多个接口。接口可以包含方法,属性,事件和索引器。
11.UML图 (统一建模语言)
- UML是一种绘制软件蓝图的标准语言
- 特点
- 标准性:元素、规则、机制
- 逻辑性:严谨
- 灵活性同样的事情,不同的正确表述
- 方言性:利益驱动,翻译版本的混乱
- 不可盲目模仿性:避免片面借鉴,抓住事物本质和思想灵魂。