答复: 关于用异常控制程序流程的看法
[url]http://www.iteye.com/topic/1112683[/url]
数据库很强大,它为我们考虑了大多数情况。像数据一致性、多表联接查询、排序等等;似乎我们不需要再去考虑更多,把这些问题统统交给数据库去做就好了。这么做的好处显而易见,而且似乎既然数据库已经提供了如此众多的特性,我们没有不用的道理。当然缺点就是数据库压力增加了,软件的大多数压力都集中到了数据库。
看起来这似乎不是什么缺点,而且商用数据库还能获得大厂商的技术支持,好处多多。而且压力大了还可以通过增加集群节点来缓解。领域软件都是这么做的,为了安全性。oa、erp、crm等软件一般也把数据一致性问题交给数据库处理,因为方便,一个公司内部使用的软件,并发量一般不会太大,不需要为吞吐量和响应时间考虑太多。甚至我知道有些架构设计连业务逻辑都交给存储过程去做了。不过有些时候巴不得把所有事情都交给数据库去做不见得是个好方法。
最后,既然你在当前这一层就能处理的情况为什么还要抛异常出去再到上一层处理。就像领导安排你一任务,你遇到的各种情况都跟领导汇报一下但你明明就有能力处理可就是不处理,这样好吗?实际上领导只关心你的处理结果。同样的,你负责的代码能处理的问题就处理,把处理结果告知调用者就行了,这样不是能减少调用者的麻烦吗?在软件工程分工细致的团队,这么做非常有利,代码的责任和人的责任都很明确。
最后的最后非常感谢snowm同学的回复。分割线上面的就是我要说的。非常感谢您能仔细耐心的把我的帖看完,回复也很仔细。我就不多解释了,下面说下分割线下面的内容。
本来我举这个例子是为了说明下分割线上面提到的问题。后来仔细想想,这个例子有些粗糙了。本来是想开帖讨论异常和业务状态码、错误码的优劣和应该在哪些情况下使用它们。让我没想到的是,现在居然变成了如何维护数据一致性、数据表设计方面的讨论了。是我说的不清楚还是我的帖太有指向性?
最近一直在加班,等闲下来了再开新帖吧。我得好好组织下文字。
再回答snowm的最后一句。得到了啥和失去了啥都在前面说过了,得到了低数据库负载和更细致的分工还有维护业务逻辑的高代价当然还有高水平的程序员。失去了数据库提供的便利。当然我说这些和之前发的帖并不是说一定要怎样,一定不能怎样。这类问题没有绝对对错。只有适不适用、方不方便、简单困难和哪个是更优方案。在你看来是扯淡的做法,在我看来恐怕是更合适的,反之亦然。
我们不能纯粹为了用什么而用什么,而应该考虑更优方案。就像hibernate很多地方用异常做程序流程控制,因为在它遇到的那些场景下可能是最合适的、效率最高的。对基础框架和类库来说,对效率的追求无论如何都不过分。当然我说的是更优方案,不是最优。因为只要去想去思考去验证应该总能找到更加合适的方案。有些时候明明有更优方案我们可能也会弃之不用,因为已有成熟的和熟悉的方案一直在用,我们成了习惯,而采用不熟悉的方案即使它是更优的,我们可能也不敢用,因为采用一种不熟悉的技术,不了解的架构需要承担更大的风险,在以安全稳定为第一或以完成任务为第一的情况下还是采用保守的方案更好一些,即使方案差一些至少不容易出错。
答复: 关于用异常控制程序流程的看法相关推荐
- 第3章 控制程序流程(1)
第3章 控制程序流程(1) "就象任何有感知的生物一样,程序必须能操纵自己的世界,在执行过程中作出判断与选择." 在Java里,我们利用运算符操纵对象和数据,并用执行控制语句作出选 ...
- Cortex-M0微处理器异常入口流程的细节
Cortex-M0微处理器异常入口流程的细节:调用者保存寄存器:R0-R3.R12.PC.LR.xPSR
- 麒麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/129858821 红胖子网络科技博文大全:开发技术集合( ...
- 人工智能开发人员工作流程、看法、工具统计数据
人工智能开发人员工作流程.看法.工具统计数据 本文目录: 一.人工智能开发所需要的技能和知识 二.开发人工智能需要以下工具 2.1.开发过程中的人工智能工具调查 2.2.AI 工具情绪调查 2.3.A ...
- kernel 3.10内核源码分析--中断--中断和异常返回流程
一.问题 1.内核调度与中断/异常/系统调用的关系如何? 2.信号处理与中断/异常/系统调用的关系如何? 3.内核抢占与中断/异常/系统调用的关系如何? 4.内核线程的调度有何特别之处?中断/异常/系 ...
- 关于国家教育部最新答复的关于第一学历的个人看法
关于最近国家教育部最近关于答复"第一学历"的话题冲上了热搜.日前,教育部针对网友提问"请问专升本(非成人高招专升本)毕业后的第一学历是专科还是本科?"进行答复称 ...
- 爪哇国新游记之十一----用异常控制流程
import java.util.HashMap; import java.util.Map;public class LoginService{private Map<String,Strin ...
- 异常工作流程的处理机制(待更新)
今天突然通知需要接入一个新的平台,那么,该如何接呢?看文档,搭环境,调试测试,提交!记得以前接xx云,api没写全,测试不通过,于是各种微信博客qq群,一顿乱问,博客中看到N中方案,微信QQ群的建议更 ...
- 这代码写的跟狗屎一样!怎么优化?19招搞定它
大家好,我是田哥,专业做面试辅导和技术分享! 去年可能你写了很多Bug,但新的一年咱们得有所改变,今天就给大家安排了. 今天主要是分享如何优化我们的Java代码,代码写的好,自然bug就会少很多,但不 ...
- 拉勾教育 | Java 性能优化实战 21 讲
开篇词 开篇词 | Java 性能优化,是进阶高级架构师的炼金石 你好,我是李国.作为<Java 性能优化与面试 21 讲>这个课程的作者,我先来简单介绍下自己. 我曾任京东金融.陌陌科技 ...
最新文章
- 10---Net基础加强
- linux修改文件描述符,linux最大允许的文件描述符open files数nofile修改
- Data Collection
- 【架构设计】Android:配置式金字塔架构
- 能代表个人水平的c语言程序,求全国高等学校计算机水平考试级C程序设计的免费..._报关水平_帮考网...
- android游戏开发框架libgdx的使用(十五)—TWL布局
- IIS asp.net 4.0
- Linux非root用户如何使用80端口启动程序
- keli下使用断点调试
- c++自动抢购_软件神器—全网口罩监控抢购
- 2022年帝国CMS7.5内核精仿《5288商机网》二次开发多个功能,运营级
- 智齿科技推首款智慧客服产品:机器人代替人工
- iphone-使用TextField及关闭键盘(useing TextField for inputs、using the keyboard)
- 蓝牙技术|防丢背包获奖,Find My产品受追捧
- 生命,因为热爱所以敬畏
- word文档中动态生成excel表格(基金公告系列讲解)
- Android画板,橡皮擦为黑色痕迹的问题
- 关于学习Laravel5.8时的知识总结及遇到的问题(持续更新)
- ASEMI整流桥ABS10、ABS210、DB107S详细参数对比
- 杜克大学计算机统计学,杜克大学的统计学专业怎么样?
热门文章
- 微信小程序 多标签选择和添加标签
- pdf转图片 jpg png
- 打印的时候显示域服务器不可用,Win10打印时active directory域服务不可用解决方法...
- Butterworth滤波
- 计算机桌面为什么没有语言栏了,电脑还原桌面的时候语言栏里怎么什么都没有了,只有到打字的时候才显示 ,这是为什么啊...
- youtube python 中文_GitHub - dousirui001/youtube-streaming-translator-python: 实时翻译油管直播,开发中...
- u盘最大单个文件支持多少g_解决U盘拷贝时提示文件过大问题(不能拷贝超过4个g的文件)...
- 手把手 网络爬虫:用爬虫爬取贝壳房租网西安的租房信息
- 常有不规则动词的过去式和过去分词…
- 计算机四级数据库工程师考什么,计算机四级《数据库工程师》考试大纲