从代码操作层面解释什么是“面相对象编程”?

起因:

        今天开了一个小会,会上朋友给我们说了一个事,Java项目上他开发一个小功能 用了很多代码,项目经理发现代码太多,说要优化一下,然后亲自帮同事优化,结果是查库的代码少了至少10条sql,同时代码复杂度降低了很多,代码去掉了有一半,我去翻了这些代码后对这个事情做了一个总结。

问题:

        项目经理在方法间传递用的是对象,同事用的是字符串。项目经理玩的是从1到N,同时玩的是从0到N,所以同事要反复查询数据库去构建那个1 代码就变多了,本质原因是对前端不信任、不放心造成的。

解决方式:

        如果对前端信任或则让前端知道不配合那么功能就不能正常运行,这样就应该要求前端转发更多的带ID的对象来实现接口数据传输,帮后端同事把拿到数据后再查数据库的那一步省掉了,所以省了很多查询库的操作和代码逻辑。(前端只负责转发,这样锅就由后端来背了,前端也轻松)。【当然这也为逆向工程留下了漏洞】

        同时后端的方法尽量用传对象的方式去解决问题,让车跑在轮子上,前后端的数据形成一个闭环,编程的数据流就产生了,非常丝滑!

        关键是开发时间还变少了很多,且开发代码也变少了,以后定位bug也会非常容易。维护起来也简单了。

        这就是Java跟Php的区别(Php其实也可以这样玩),传说中的java面向对象编程。程序员思考问题的起点是基于表的对象维度而不仅仅是产品的要求,这是编程效率的提升点。

        这就把代码的设计思路维建立在项目设计的维度上了,让起初的项目总体设计来承载目前需求的代码设计的风险,这样也就可以拿着数据库表的设计维度和代码风险去跟产品掰扯了。

总结:也就是以面对象的方式去编程(这个对象包括基础表对象,业务数据传递的vo、dto等),要以他们为轮子去走流程,这些对象背后所代表的维度就是代码编程的轨道,一旦脱离了轨道,代码就会显得非常的混乱和不好管理,内行人说“你的代码是逗的,不是这么写的”,说的就是这个道理。一旦开始逗代码了,项目就开始烂了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/89300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java如何解决浮点数计算不精确问题

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址[1] 面试题手册[2] 系列文章地址[3] 1. 什么是浮点数计算不精确问题? 在 Java 中,浮点数计算不精确问题指的是使用浮点数进…

接口测试——接口协议抓包分析与mock_L2

目录: 抓包工具charles抓包工具fiddler抓包工具证书配置app抓包实战练习接口测试实战练习 1.抓包工具charles 工具介绍 支持 SSL 代理支持流量控制支持重发网络请求,方便后端调试支持修改网络请求参数支持网络请求的截获并动态修改可以自动将 json 或…

电子电子架构——AUTOSAR信息安全机制有哪些?(上)

电子电子架构——AUTOSAR信息安全机制有哪些(上) 我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人们会在生活中不断攻击你。他们的主要…

Mysql 子查询,最值查询

1.leetcode-184:查找部门内最高的薪水 首先是一个子查询,找出一个部门里最高的那个工资 随后查找最终需要的值,并且部门编号以及薪水应该包含在这个子查询中 最终答案: # Write your MySQL query statement below SELECT Depar…

爬虫获取一个网站内所有子页面的内容

上一篇介绍了如何爬取一个页面内的所有指定内容,本篇讲的是爬去这个网站下所有子页面的所有指定的内容。 可能有人会说需要的内容复制粘贴,或者直接f12获取需要的文件下载地址一个一个下载就行了,但是如下图十几个一级几十个二级一百多个疾病…

网工内推 | 网络工程师,软考证书优先,六险一金,包吃

01 科力信息 招聘岗位:网络工程师 职责描述: 1、负责蚌埠项目的设备安装及调试; 2、对边界网络运行中的监控、故障排除、问题处理。 任职要求: 1、2年及以上网络相关工作经验,有交通管理网络运维经验优先&#xff1b…

webview_flutter

查看webview内核 ​https://liulanmi.com/labs/core.html​ h5中获取设备 https://cloud.tencent.com/developer/ask/sof/105938013 https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/mediaDevices web资源部署后navigator获取不到mediaDevices实例的解决方案&…

重新认识Java中的死锁问题

一、定义 多个进程因抢夺系统资源而产生相互等待的现象。 二、场景模拟 package com.gui.practise.thread.deadlock;public class DeadLock {private final Object resource1 new Object();//资源 1 private final Object resource2 new Object();//资源 2 public v…

前端架构师之路03_移动端规范兼容处理

1 移动端页面制作规范 1.1 计量单位的使用 CSS 的计量单位选择 px:固定的像素值em:相对父级元素的 font-size 设置来作为当前元素 1em 所代表的像素值,如父节点的 font-size:10px,当前节点的 font-size:1.2em,则当前节…

什么才是物联网领域最好的开发语言?

什么才是物联网领域最好的开发语言? 最好!运行最快?开发最高效?最容易学习? 各有特点! 采用C/C语言,运行最快,一般采用厂家提供的底层驱动支持包BSP,所有MCU都支持。如…

2009-2018年各省涉农贷款数据(wind)

2009-2018年各省涉农贷款数据(wind) 1、时间::209-2018年 2、范围:31省 3、来源:wind 4、指标:涉农贷款 指标解释 :在涉农贷款的分类上,按照城乡地域将涉农贷款分为农村贷款和城…

Spring 学习(五)JavaConfig 实现配置

1. 使用 JavaConfig 实现配置 JavaConfig 是 Spring 项目的一个子项目,Spring 4 后成为核心功能。 注意: 如果开启包扫描,加载配置类以后就可以通过反射拿到配置类中的对象了。Bean 只写在方法上,返回的是一个对象,但…

Django的设计模式及模板层

Django的设计模式及模板层 设计模式MVC和MVT MVC 代表 Model-View-Controller(模型-视图-控制器)模式。 M 模型层(Model),主要用于对数据库层的封装 V 视图层(View),用于向用户展示结果 (WHAT HOW) C 控制(Controller,用于处理请求、获取数据、返回结果(重要) 作…

SpringMVC 学习(六)乱码问题

8. 乱码问题 网络编程中乱码绝大部分都与编码格式有关,常常在涉及到中文的文件编译或者数据传输中出现。 Spring MVC 使用 post 方式传输带中文数据时便会出现乱码,get 方式则不会,解决方式如下: (1) 自定义过滤器 过滤器 pu…

记录使用iText7查找PDF内容关键字坐标,加盖电子签名、印章

一、前言 项目以前签字都是由C端那边进行合成操作,最近项目要求把那块功能,由后端进行实现,其中包含坐标、关键字、任意位置进行签字操作,坐标是最容易实现的,曾经也写过类似的功能在(添加图片印章到PDF&a…

如何做好测试?(三)功能测试 (Functional Testing, FT)

1. 功能测试的详细介绍: 功能测试 (Functional Testing, FT),是一种软件测试方法,旨在验证系统的功能是否按照需求规格说明书或用户期望的方式正常工作。它关注系统的整体行为,以确保各个功能模块和组件之间的交互和集成正确。 …

Spring学习笔记3 Spring对IOC的实现

Spring学习笔记2 Spring的入门程序_biubiubiu0706的博客-CSDN博客 控制反转是一种思想 控制反转是为了降低程序耦合度,提高程序扩展力,达到OCP(开闭原则)原则,达到DIP(依赖倒置原则)原则 控制反转,反转的是什么? 1.将对象的创建权力交出去,交给第三方容器负责 2.对象与对象…

【Vue3 源码解析】nextTick

nextTick 是 Vue 3 中用于异步执行回调函数的函数&#xff0c;它会将回调函数延迟到下一个微任务队列中执行。其中&#xff0c;Vue 更新 DOM 是异步的。下面是对 nextTick 函数的详细解释&#xff1a; export function nextTick<T void, R void>(this: T,fn?: (this:…

某市住房公积金管理中心领导莅临创邻科技考察指导

近日&#xff0c;某市住房公积金管理中心&#xff08;以下简称“公积金中心”&#xff09;领导带队&#xff0c;一行6人莅临浙江创邻科技调研指导&#xff0c;创邻科技CEO张晨、COO吴菁、CTO周研作为代表接待来访并举行会谈。 该公积金中心一行此次莅临创邻科技考察调研&#…

【C#】Redis在net core下使用教程

系列文章 文章目录 系列文章前言一、Redis 简介1.1 Redis 优势1.2 Redis与其他key-value存储有什么不同&#xff1f; 二、Redis安装步骤2.1 下载链接2.2 安装测试 三、Redis修改帐户密码四、Redis写成Windows服务五、.net core - 使用CSRedisCore操作redis 前言 官方教程&…