`
runfriends
  • 浏览: 229625 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

答复: 关于用异常控制程序流程的看法

 
阅读更多
http://www.iteye.com/topic/1112683
      数据库很强大,它为我们考虑了大多数情况。像数据一致性、多表联接查询、排序等等;似乎我们不需要再去考虑更多,把这些问题统统交给数据库去做就好了。这么做的好处显而易见,而且似乎既然数据库已经提供了如此众多的特性,我们没有不用的道理。当然缺点就是数据库压力增加了,软件的大多数压力都集中到了数据库。
      看起来这似乎不是什么缺点,而且商用数据库还能获得大厂商的技术支持,好处多多。而且压力大了还可以通过增加集群节点来缓解。领域软件都是这么做的,为了安全性。oa、erp、crm等软件一般也把数据一致性问题交给数据库处理,因为方便,一个公司内部使用的软件,并发量一般不会太大,不需要为吞吐量和响应时间考虑太多。甚至我知道有些架构设计连业务逻辑都交给存储过程去做了。不过有些时候巴不得把所有事情都交给数据库去做不见得是个好方法。
      最后,既然你在当前这一层就能处理的情况为什么还要抛异常出去再到上一层处理。就像领导安排你一任务,你遇到的各种情况都跟领导汇报一下但你明明就有能力处理可就是不处理,这样好吗?实际上领导只关心你的处理结果。同样的,你负责的代码能处理的问题就处理,把处理结果告知调用者就行了,这样不是能减少调用者的麻烦吗?在软件工程分工细致的团队,这么做非常有利,代码的责任和人的责任都很明确。
      最后的最后非常感谢snowm同学的回复。分割线上面的就是我要说的。非常感谢您能仔细耐心的把我的帖看完,回复也很仔细。我就不多解释了,下面说下分割线下面的内容。
      本来我举这个例子是为了说明下分割线上面提到的问题。后来仔细想想,这个例子有些粗糙了。本来是想开帖讨论异常和业务状态码、错误码的优劣和应该在哪些情况下使用它们。让我没想到的是,现在居然变成了如何维护数据一致性、数据表设计方面的讨论了。是我说的不清楚还是我的帖太有指向性?
      最近一直在加班,等闲下来了再开新帖吧。我得好好组织下文字。
      再回答snowm的最后一句。得到了啥和失去了啥都在前面说过了,得到了低数据库负载和更细致的分工还有维护业务逻辑的高代价当然还有高水平的程序员。失去了数据库提供的便利。当然我说这些和之前发的帖并不是说一定要怎样,一定不能怎样。这类问题没有绝对对错。只有适不适用、方不方便、简单困难和哪个是更优方案。在你看来是扯淡的做法,在我看来恐怕是更合适的,反之亦然。
      我们不能纯粹为了用什么而用什么,而应该考虑更优方案。就像hibernate很多地方用异常做程序流程控制,因为在它遇到的那些场景下可能是最合适的、效率最高的。对基础框架和类库来说,对效率的追求无论如何都不过分。当然我说的是更优方案,不是最优。因为只要去想去思考去验证应该总能找到更加合适的方案。有些时候明明有更优方案我们可能也会弃之不用,因为已有成熟的和熟悉的方案一直在用,我们成了习惯,而采用不熟悉的方案即使它是更优的,我们可能也不敢用,因为采用一种不熟悉的技术,不了解的架构需要承担更大的风险,在以安全稳定为第一或以完成任务为第一的情况下还是采用保守的方案更好一些,即使方案差一些至少不容易出错。
分享到:
评论

相关推荐

    答复: 一道经典线程面试题的4种解法

    标题中的“答复: 一道经典线程面试题的4种解法”暗示了这是一个关于多线程编程的问题,通常在面试中出现,用于评估候选人的并发处理能力。在这个问题中,可能涉及到同步、线程安全、锁机制等关键概念。 在Java中,...

    cpc客户端实用新型专利答复补正修改操作步骤流程[汇编].pdf

    以下是一个详细的操作步骤流程,指导你如何在CPC客户端进行实用新型专利答复补正的修改: 1. **准备材料**: 在开始操作前,你需要准备以下文件: - 修改正确的文档:这是已经根据审查员意见进行了修正的专利文档...

    答复: 通过代码简单介绍JDK 7的MethodHandle,并与.NET的委托对比(二)

    标题中的“答复: 通过代码简单介绍JDK 7的MethodHandle,并与.NET的委托对比(二)”表明本文将深入探讨Java中的MethodHandle概念,并将其与.NET平台上的委托进行对比。MethodHandle是JDK 7引入的一个强大特性,它...

    答复: 喜欢和使用Portal的朋友请进!

    博文链接:https://eric2007.iteye.com/blog/158580

    答复: Java开发规范,让你写的一手好代码,看了之后不用自卑

    - 不要忽视异常,应正确捕获并处理异常,避免使用`catch (Exception e)`这样的通用异常处理。 - 提供有用的异常信息,如异常发生时的上下文和错误消息。 5. **访问控制** - 尽可能使用最严格的访问修饰符:私有...

    内外部沟通控制程序.pdf

    内外部沟通控制程序是企业管理和运营中的关键环节,旨在确保信息的有效传递,增强团队协作,以及与外部合作伙伴建立良好的关系。以下是对该程序的详细解释: 1. **目的**: 内外部沟通控制程序的主要目标是通过...

    公司客户供应品异常单.doc

    14. 客户答复或承诺:记录客户对异常单的答复或承诺,以便于了解客户的反馈。 15. 答 复 或 承 诺 证 明 文 件(编号):记录客户答复或承诺的证据,以便于了解客户的承诺。 16. 主管:记录该异常单的主管,以便于了解...

    三年级英语暑假作业之句子改写练习.doc

    - 肯定答复与否认答复:对一般疑问句的回答,肯定答复用“Yes, + 主语 + 助动词/情态动词。”,否定答复用“No, + 主语 + 助动词/情态动词 + not。” 2. 具体题目解答: - 1. It is fun at school. 否认句:It is...

    结社自由和集体谈判的权力控制程序.pdf

    结社自由和集体谈判的权力控制程序 结社自由和集体谈判的权力控制程序是指公司为了尊重员工的自由和保障员工的合法权益而制定的一系列程序。该程序旨在加强社会责任,保障员工的自由,尊重员工的合法权益,并确保...

    在Word2021中如何答复批注.docx

    - 使用Word 2021程序打开包含需要答复批注的文档。 2. **定位批注**: - 浏览文档直至找到需要答复的批注。批注通常出现在文档右侧的边栏中,与相关的文本内容紧密相连。 3. **点击“答复批注”按钮**: - ...

    顾客满意度测量控制程序.pdf

    - 顾客投诉由市场部主管负责,填写《品质异常报告单》并转交给相关部门,遵循《合同(订单评审控制程序》和《纠正与预防措施控制程序》执行。 - 每年第四季度,市场部会将收集到的《顾客满意度调查表》发送给品管...

    cpc客户端实用新型专利答复补正修改操作步骤流程.pdf

    CPC(Cooperative Patent Classification,合作专利分类)客户端提供了便捷的答复补正修改操作流程,以下是一份详细的操作步骤指南: 1. **准备材料**: 在进行答复补正前,你需要准备好以下两份文档: - 修改...

    答复:答复“通向开放未来的捷径”

    标题中的“答复:答复‘通向开放未来的捷径’”暗示了这是一篇对某个讨论或议题的回应,特别是关于开放科学和知识发布的路径。在描述中提到的SpringerNature是一家知名的学术出版机构,它涉及的社论可能讨论了如何在...

    公司客户供应品异常单(表格模板、DOC格式).doc

    通过这份《公司客户供应品异常单》,企业可以建立起一套标准化的问题报告和处理流程,从而提高响应速度,减少因供应品异常带来的损失。同时,这也是企业持续改进和提升服务质量的重要工具,通过对异常情况的记录和...

    cpc客户端实用新型专利答复补正修改操作步骤流程-8页.pdf

    以上就是使用CPC客户端进行实用新型专利答复补正修改的详细流程。这个过程要求申请人或代理人具有良好的文档管理能力,对专利法的深入理解,以及准确无误地执行每一个步骤,以确保专利申请的顺利进行。

    某公司人力资源控制程序文件.doc

    本文档是某公司的人力资源控制程序,旨在确保公司的人力资源能够适应公司经营发展的需求,涵盖了从员工招聘、培训、调配到离职等一系列管理流程。以下是该程序的主要内容: 1. **岗位编制**:总经理根据公司战略...

    QB-08生产过程控制程序.doc

    《QB-08生产过程控制程序》是炬星电子(惠州)JUXINGINDUSTRIALLIMITED制定的一份重要文件,旨在确保公司的生产过程在受控状态下进行,以生产出满足客户需求的产品并提高生产效率。该程序适用于公司所有产品的生产过程...

    工作意见提案答复样表.docx

    很抱歉,但您提供的文件标题和描述"工作意见提案答复样表....然而,以上信息并不直接对应您提供的"工作意见提案答复样表.docx"的具体内容,如果需要关于特定IT工具或技术的详细信息,请提供更具体的相关背景或问题。

Global site tag (gtag.js) - Google Analytics