Java是一门面向对象的编程语言,对于java来说:“万物皆对象”。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现了程序的开发。
主流的程序设计用spring来管理我们的对象——java bean。早期有ssh 、ssm两种spring作为大管家的java框架。随着时间的推移ssh 由于架构笨拙,编写繁琐渐渐得淡出了人们的视野,于此同时,ssm的弊端也渐渐显现。Ssm里有大量冗长的xml配置,不仅配置时比较耗费时间,还降低了可读性。我们知道对应代码来说,可读性的降低是要以程序员的时间和头发来弥补的。接下来spring推出了,java程序员的浪漫——spring boot。Springboot的优点:1.减少了大量的开发时间并提高了生产力。2.避免了编写大量的样板代码,注释和XML配置。3.快速整合第三方框架,无需配置文件。4.代码少了、配置文件少了、不需要对第三方框架烦恼了、项目精简了,对整个团队的开发及维护来说,更大的节约了成本。5.使用Java开发基于Spring的应用程序非常容易。当然游戏王中曾经说过:“强大往往伴随着风险”。再强大的人也是有弱点的,Springboot也不例外。Springboot为了提高代码效率,设计的集成度很高,这就造就了它的两大缺点,1.报错难以确定位置。2.底层代码难以学习。对于一个框架来说,简单易上手,提高代码和开发效率,这几点springboot做的的确很好,但是随着工作年限的增加,越来越难得业务会落在头上,这个时候springboot底层代码将是那座高不可攀的山峰。
Mybatis是java的一款持久层框架,它以代替了jdbc配置,小巧并且简单易学,支持编写动态SQL语句,支持对象与数据库的ORM字段关系映射等优点为大众所熟知。Ssm、springboot两款主流框架都不约而同的选择了它,可见它的优秀程度。但是人无完人,金无足赤,它对于程序开发来说它也是有缺陷的。1. SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。2. SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。3. 与JDBC相比,增加了调试代码和查错的难度(使用了ORM需要额外花费时间学习ORM的框架,调试错误比JDBC难很多)。封装程度越高,查错越难。4. JDBC可以单步调试,MyBatis不能单步调试。当然Mybatis也有一个升级版本——Mybatis-plus。Mybatis-plus和Mybatis相比增加了许多工具方法,使得我们不用去写冗长的sql,提高了我们的开发效率。
数据库是持久层很重要的组成部分,它的出现解决了数据持久化效率低、和读取速度慢的问题,在现在的java开发中几乎是不可或缺的一部分。当然作为一个java程序员,很好的sql功底是必要的,解决了数据的来源或者去向问题,会使得我们的思路更加清晰,就像战场上有了坚强的后盾,这终将会让战士无往而不利,大杀四方。关系型数据库一般主要分为 库、表、数据三层结构。这也是开发当中用的最多的一种数据库如、Mysql、Oracle、SqlServer常常会出现在我们的工作中,他已经成为开发工作中不可或缺的一部分。
开发工作中的代码规范也是很重要的。
一、命名规范
其实所有的编程语言的命名规范应该都大同小异,java命名讲求见名知意,推荐驼峰命名法(,是电脑程式编写时的一套命名规则(惯例)。正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。),不要汉语拼音命名。
命名时适当的加入前缀和和后缀能够提高代码的可读性和规范程度,用前缀标记模块,后缀标记功能不得不说是一个好的方式。数据库表名称、实体类、mapper、service、contorller,尽量命名规则一致让人一眼就可以看出他们的对应关系。如sys_dict_data ,SysDictData、SysDictDataMapper、SysDictDataService、SysDictDataContorller,不得不说这是个好实例。
二、注释
注释是程序员的有效阅读代码的依仗,在写复杂逻辑时,如果没有注释的习惯,无论是编写过程中还是后期维护都造成很大的问题。写注释不用太复杂,简明扼要即可。一般需要注释的地方有,数据库表注释、数据库字段注释、类注释、类属性注释、类方法注释、方法内行内注释。
三、代码结构
类的继承慎用,但是用的好了,也会起到事半功倍的效果。
方法长度尽量不要超过40行,尽量把方法拆分成单一的功能,原则是尽量不用出现不要出现重复代码。
尽量不用做代码调用的嵌套,使得一行代码在一屏的距离上可以展示,尽量写出可以单步调试的代码。慎用链式开发的方法。
循环递归里尽量不要去调持久层、缓存等外部组件,减少代码对外部组件的压力。
一个方法里调多次增删改的时候设置事务,监听异常要改成 Exception 。如图: