有后端开发经验的程序员都知道,对于同样的功能,有着不同的实现方式,可以用不同的技术方式去实现,最后都能达到实现功能的目的,但是用哪种技术,哪种方式去实现在开发成本,时间成本,可维护成本,以及是否方便以后的扩展方面就有着很大的差异,因此在前期的技术选型时还是很有必要多花一些时间认真考量一下,只有想的全面一点,才有可能为以后项目的进行奠定良好的发展条件。
近期,一名公司的技术总监因为一个技术方面的选择,就吐糟了他手下的程序员,他说,搞java的都是老态龙钟的么,区区不到十个链的lambda表达式吐槽不好维护应该写存储过程,这样的观点让他觉得这是回到了上个世纪,在这名技术总监看来,使用存储过程的这种方式十分不值得提倡,也不方便后期维护,那么针对这样的观点,让我们一起看看其他网友是怎么认为的吧,来看看他们是否有不同的观点。
网友一:我觉得这是常识吧,直接在数据库里用sql干掉的事情,为什么还要接出来用java?
上世是朵花:关于这个事情,也不能一概而论,不同人有不同的见解,如果只是从性能角度出发,在数据库直接做肯定是要比后端语言处理效率要高,但是现实场景中除了效率之外,还是有好多因素要考虑的,比如,可维护性等。
网友二:sql不好维护,过长的sql毫无阅读体验
上世是朵花:有类似的感觉吧,不过不同人可能对此看法并不相同,比如有的人擅长看复杂的sql, 甚至他们觉得比看代码容易的多。
网友三:我觉得也要看lambda表达式的可读性吧
上世是朵花:没错,是要衡量一下,需要看具体情况,另外结合项目具体情况去考虑比较好。
网友四:好不好维护,管老板什么事?
上世是朵花:没错,是否好维护与老板关系的确不大,但是也不是完全无关系,是否好维护就决定了技术团队的产出效率,最终还是要决定了经济效益,还是与老板有关系的。
网友五:java不懂,C++而言,lambda表达式真不好看
上世是朵花:这名c++的朋友是这么认为的,针对这样的事情有不同的观点很正常,可能看问题角度与自身的环境有关。
网友六:因为数据库的最根本的作用就是存储,计算只是额外附加的。而复杂的sql难免涉及到运算,比如多表联查等等,通常情况下用数据库的计算能力无所谓,但如果要求压榨数据库的存储和查询能力的话,就要将数据库的计算开销给节省下来,这时候就得将计算部分转移到服务器。简单说数据库只留单表查询
上世是朵花:认同“数据库最最主要的作用就是存储”一说,不过数据库的有些功能既然设计出来了,那也是存在即道理的,可能使用人群并不多,但并不代表完全没用,在比较特殊的一些环境还是可以用到的。
网友七:两种方式半斤八两,都不是好维护的东西
上世是朵花:软件设计的高境界就是没有复杂的代码,每个程序员写的都是curd, 看着方便,好维护,但这些curd凑到一块便是一个伟大的项目,这个设计的精妙之处就是化繁为简,把那些不好维护的东西逐渐拆分,分解,最终都变成了curd类的代码。
网友八:你是领导,你可以定统一标准。不能每个人都习惯、比较熟悉的东西完全一致,这就看你怎么调配了。数据库有存储过程并不是不可以,一般数据库的服务器配置都比较高,资源不是紧缺的情况下,这只是一种选型。如果有很多服务器,缓存、消息、队列,分布式、分表分库全上,异步存数据库,但这个费用确实不少,还是得看实际情况
上世是朵花:没错,在有的事情上,没有哪种方式是对的还是错的,都可能掺杂一些利弊在里面,这种情况都需要有技术领导人站在全局的角度去做决定,保证整个项目的规范与统一。
针对技术方案的争论,既然存在争议那很有可能说明难以取舍,往往是每种情况都存在一定的利弊,所以才具有争议,如果其中一种方案与另一种方案相比,具备绝对明显的优势,那就不存在什么争议了,对于比较有争议的情况,技术管理者就需要站在更高的角度去做决定,也不能说谁想怎么用就怎么用,整个项目必须有人制定统一标准规范,只有严格规范项目,才能让项目后期有着更良好的发展。
以上所有图片均来之互联网
大家好,我是“上世是朵花”。如果你有什么好的看法或者观点可以在评论区展现你的才华,互动交流,如果想进一步了解我,那就关注我吧!
领取专属 10元无门槛券
私享最新 技术干货