首页
学习
活动
专区
圈层
工具
发布

告别重复检查!C#通用结果模式重构全解析

传统模式痛点:每个端点都要结果检查 假设我们有一个返回操作结果的接口: app.MapGet("/", async () => { var result = await InvokeAsync...result.IsSuccess) { return TypedResults.BadRequest(); } return TypedResults.Ok(); }); 在每个端点中重复进行这种检查实在令人抓狂...重构方案:通用结果模式 1. 创建结果类型 public readonly struct Result { private readonly TValue?...await InternalInvokeAsync(); } 核心收益: ✅ 完全消除结果状态检查 ✅ 代码量减少60% ✅ 统一错误处理流程 方案优势解析 特性 传统方案 新方案 错误处理 每个端点重复检查...当隐式转换遇上结果模式,我们不仅消除了模板代码,更构建了具有自描述性的领域语言——这正是现代C#的演化方向。

10010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    项目重构--使用策略模式

    Common.CommWindow.EndProgressBar(); return error; } } 代码凌乱,层次不清晰,过多的判断,扩展性差.....真的快看不下去了.所以决定重构下....因为最近在学设计模式,仔细分析下,这不正好策略模式很像吗?...再看下策略模式的定义: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。...好,我们对策略模式稍微有了了解,那我们开始重构这段代码: 首先讲下这段代码要实现的功能,他主要是刷卡功能的实现,有就诊卡,银行卡,医保卡等,每种卡对应不同的刷卡器,同时对应不同的信息提示与背景显示等....} Common.CommWindow.EndProgressBar(); return error; } } 重构后代码量减少了将近一半以上

    95590

    优秀代码---改善代码三部曲:重构、设计模式、重构与模式

    Encapsulated: 封装良好的代码有助于管理复杂度, 也更容易修改 •自主 Assertive: 自主的代码其行为和其所依赖的数据放在 一起,不与其它代码互相干预(Tell but not Ask) • 无重复...不敢拆分方法:持续增长的方法长度 不敢拆分类:持续增长的类大小 持续脏代码:“脏”代码诱发增加更多的坏味道 不敢抽象:为了适配不同场景拷贝出大量重复代码。...侧重设计模式+重构手段。 在阅读重构与模式之前,最好熟读前面两本:《设计模式》和《重构》。...重构是实现设计模式的一种手段,设计模式往往也是重构的目的。...通过重构产生设计结构,也就是通过重构实现模式或者重构趋向模式。 为设计而设计的思路并不适合大项目,循序渐进从重构到设计模式才是设计模式的王道。

    65340

    jquery 使用 unbind 解决重复绑定执行事件

    原文:jquery 使用 unbind 解决重复绑定执行事件 存在问题 在jquery监听click事件的时候会出现点击一次没有重复,点击第二次就重复的情况。...问题:发现重复打印了前面绑定了 id = 1 的日志数据。 问题的基本原因:应该是上一行删除的数据 id 的click事件没有被解绑,当再次触发的时候,就重复执行上一次绑定的事件。...说明前面绑定的事件又重复之前了一遍。 这个就有点像jquery执行动画效果之前,需要使用一个stop()方法,将之前执行的动画都停止掉一样。...这种事件绑定重复的执行问题,需要一个unbind()方法,先解除绑定,再绑定执行,才能解决重复执行。不然重复进行绑定事件,那么就会重复执行事项。 查看解决代码 看看问题代码,如下: ?...设置了unbind之后,日志打印没有重复执行的情况了。

    1.8K30

    前言——页面重构中的设计模式

    前言——页面重构中的设计模式 由 Ghostzhang 发表于 2012-11-09 02:56 前不久开始写《页面重构中的设计模式》,本想着内容应该是蛮多的,可是到约9000字的时候,发现写不下去了...之前在写《[页面重构中的模块化设计][]》系列时就发现,只是讲模块化有点窄了,有些很重要但并不是模块化的内容放不进去,所以才会想说是不是需要一个更大的主题,正好也接触了下设计模式相关的内容,觉得可能会合适吧...页面重构中的模块化设计(二) 继承──页面重构中的模块化设计(三) 模块化的核心思想──页面重构中的模块化设计(四) 基类、扩展类──页面重构中的模块化设计(五) CSS模块的注释——页面重构中的模块化设计...(六) 关于设计模式,以我的理解归纳了一下: 设计模式是被发现而不是被发明的。...当然说到设计模式,我们可能最先想到的就是“工厂模式”、“观察者模式”等程序上的解决方案,而我们的话题似乎有点不同。

    29930

    JavaScript设计模式之终章:重构

    重构 模式和重构之间有着一种与生俱来的关系。从某种角度来看,设计模式的目的就是为许多重构行为提供目标。...2 合并重复的条件片段 假设上面的案例中handleSubmit,页面操作无论成功或失败都要触发刷新: const handleSubmit=({api,handleSuccess,handleFaild...用《重构》里的话说,嵌套的条件分支往往是由一些深信“每个函数只能有一个出口的”程序员写出的。 实际上,如果对函数的剩余部分不感兴趣,那就应该立即退出。...其次你可以根据业务需求的重复度,"内置"一套配置,传入参数则部分地复写这个内置配置。 8 减少三目运算符 不推荐在嵌套中盲目使用三目运算符。...10 分解大型类 假如你的valid函数特别复杂,同样需要考虑用策略模式分解成插件的形式。不要将所有逻辑写到一个方法中。

    40210

    互联网开发模式二:敏捷与重构

    敏捷开发的意义和实践 敏捷开发是我们现在最常见的一个“开发模式”,然而很多时候,我们看到“敏捷”两个字,似乎就是让程序员多加点班,或者忽略一些过程加快把代码弄出来,而真正理解“敏捷”含义的并不多。...代码架构与重构 我见过无数的代码架构图,里面画满了进程和服务器的拓扑,各种线条上标注了通讯协议,编码格式,还有各种流程图和协作图,然而,这些架构设计,无一例外的对于需求变更毫无帮助。...因此我们想到了流行的“重构”,然而,如果我们只是重构进程的关系,通信的层次,那些错综复杂的代码调用关系一样存在。各种回调、事件、耦合还是让代码无法理解。

    1.4K40

    面向对象、设计原则、设计模式、编程规范、重构

    面向对象、设计原则、设计模式、编程规范、重构 面向对象 主流的三个编程风格有:面向对象,面向过程,函数式编程。 面向对象是最主流的风格,面向对象具有丰富的特性(封装,抽象,继承,多态)。...不常用的有:门面模式、组合模式、享元模式 行为型 常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式 不常用的:访问者模式、备忘录模式、命令模式、解释权模式、中介模式 编程规范...编程规范相对于设计原则,设计模式,更加具体,更加偏重代码细节。 编程规范《重构》《代码大全》《代码整洁之道》是非常好的参考资料 代码重构 没有一劳永逸的设计,需要随着需求的变化,不断迭代。...重构的工具是面向对象设计思想,设计原则,设计模式,编码规范。 重构的目的(why)、对象(what)、时机(when)、方法(how) 保证重构不出错的技术手段:单元测和代码可测试性。...两种不同规模的聪哥:大重构额小重构 面向对象、设计原则、设计模式、编程规范、代码重构 本质上都是服务于编写高质量代码的。

    57610
    领券