Java-你还在使用Map来代替实体类作为参数吗?

1.前言

       刚入职的时候,了解公司框架后发现很多传参(包括前端向后端传参、后端Java封装函数的入参以及调用MyBatis时的入参)的位置,入参的位置都很“协调”,很多地方都是Map形式的参数与函数进行交互。而当时所接受的思想是开发要体现面向对象,要体现封装,但是实际工作时接触到一些项目后发现事实与理论是有所差异的,今天就来说一说我个人对Map和JavaBean作为函数入参时的理解。

2.使用Map作为入参的优缺点

2.1使用Map作为入参的优点

       1.使用Map不需要定义属性以及初始化get、set方法和构造函数,可以简化这些操作部分;

       2.Map的灵活性要高于JavaBean,可以根据不同的封装内容,使用于不用的场景,而这样也就意味着Map的扩展性很强,耦合度更低;

       3.Map可以直接作为IBatis、MyBatis的返回结果,省略了JavaBean作为返回结果时需要将返回字段与实体属性进行关系映射的步骤,可以简化操作;

2.2使用Map作为入参的缺点

       1.使用Map作为入参需要明确维护好每个key参数对应的使用场景及明确描述key的作用等,否则后期需要维护的时候这就是个让你头疼的坑;

       2.对指定key的value值进行加工处理时需要另外封装函数,如果加工处理的函数较多时会显得代码过于散乱;

       3.团队开发时,如果多个人同时需要使用同一个Map时,会出现Map中出现多个不同的key,但是保存的值是相同的,这样会导致代码冗乱,多个业务之间衔接时不方便理解;

       4.如果与IBatis或MyBatis交互作为返回结果时,编译期无法确认参数是否有误,若参数有误需要到sql交互层进行确认;

2.3使用JavaBean作为入参的优点

       1.JavaBean作为入参时,在属性方面和函数两方面都可以良好的体现面向对象和封装的概念。JavaBean的属性方面:JavaBean的属性明确即使多个人同时使用同一个JavaBean,也可以避免本质上相同属性出现多个不同命名的情况;JavaBean的函数方面:当属性需要特殊加工处理时,可以在JavaBean内封装函数处理需要加工的属性,体现了对特定逻辑的封装、包装,方便团队间理解和后期维护;

       2.JavaBean与IBatis或MyBatis进行交互,作为返回结果时,通过配置属性与字段映射关系可以降低JavaBean与sql之间的耦合关系,当sql改动时修改映射关系就可以无需改动对应的JavaBean属性;

       3.JavaBean的一些问题可以在代码编译期排除,而不需要等到运行时才发现错误,可以减少在运行时需要排查的问题点;

2.4使用JavaBean作为入参的缺点

       1.增加大量代码量,需要更多的时间需考虑对JavaBean属性与业务函数的实际封装;

       2.会降低业务程序的开发进度;

       3.当JavaBean属性需要增加时,改动地方要比使用Map的形式时要多一些,要增加JavaBean属性、get/set方法、封装的业务逻辑函数以及JavaBean与sql字段的映射关系等;

3.小结

       1.个人开发项目的情况下,为了提高开发效率和减少代码量的目的可以使用Map的形式开发,对项目来说也是有利的;

       2.团队开发项目的情况下,为了团队间方便理解和减少后期二次开发以及运维的成本,使用JavaBean的形式更有利。

       所以,在实际开发中根据自身实际情况灵活运用,才是王道啊!以上是本人个人观点,若有不对之处,望大家指正,不胜感激!

       最后:全文为纯手打,码字不易,若感觉有所收获记得点个赞呀!

你可能感兴趣的:(知识点Flag,java)