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

告别重复检查!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#的演化方向。

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

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

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

    1.2K90

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

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

    2.2K30

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

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

    95840

    框架即模式:.NET 设计模式的演进与重构

    理解哪些模式已被框架接管、哪些模式仍然是必要的工具,是 .NET 开发者从“会写代码”走向“会做架构”的关键一步。一、被框架“接手”的经典模式1....观察者模式没有消失,只是从手写订阅列表变成了框架级的接口契约。4. 仓储模式 + 工作单元 → EF Core 直接实现这是近年来争议最大的模式之一。...二、框架催生的新模式框架不仅“接手”了旧模式,还催生了一批新范式。...三、模式还是反模式?何时该用、何时该弃理解模式被框架“接手”并不意味着所有模式都该被抛弃。关键在于区分“框架已替你实现的模式”和“框架无法替你实现的模式”。...,可通过 Scrutor 等库简化注册责任链模式:除中间件管道外,复杂业务规则链仍需手写CQRS:命令与查询的读写分离,在复杂业务系统中仍有不可替代的价值四、写在最后:模式思维比模式实现更重要设计模式的终极价值不在于

    16410

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

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

    54330

    JavaScript设计模式之终章:重构

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

    56610

    ChatGPT 辅助重构:老旧 jQuery 项目迁移到 React 的协作日志

    "代码是逻辑的诗篇,架构是思想的交响"摘要作为一名开发领域深耕多年的技术实践者,我曾经参与过一个极具挑战性的项目:将一个拥有多年历史、代码量超过3万行的jQuery项目完全重构为现代化的React应用。...这不是简单的代码生成,而是一个系统性的重构工程,涉及架构设计、代码转换、性能优化、测试策略等多个维度。通过精心设计的提示工程和迭代式的协作流程,我与ChatGPT建立了高效的工作模式。...整个重构过程历时6周,最终成功将项目从jQuery 1.12迁移到React 18,不仅保持了所有原有功能,还实现了40%的性能提升和60%的代码量减少。...一、项目背景与重构挑战1.1 遗留项目现状分析我们面对的是一个典型的遗留jQuery项目,具有以下特征:项目指标具体数值问题描述代码行数32,000+代码冗余严重,可维护性差jQuery版本1.12.4...AI帮助我们处理了大量繁重的重复性工作,让我们能够专注于更有创造性和战略性的任务。这种人机协作模式不仅提升了开发效率,也提高了代码质量和项目成功率。展望未来,我相信AI协作将成为软件开发的标准模式。

    41200

    重构Plaid-响应式的MVP模式

    #重构Plaid-响应式的MVP模式(一)原文链接:REFACTORINGPLAIDAPP-AREACTIVEMVPAPPROACH(PART1)原文作者:HANNESDORFMANN译文出自:hanks.xyz...因此不只是谈论代码,我决定花一些时间来重构Plaid的部分源代码。我将写3篇文章来分享我关于如何重构Plaid的,这篇文章是第一部分。...因此我的“重构”集中于应用程序的“主页”和“搜索屏幕”。本来想看看有没有更多模块可以重构,但是我没有太多空闲时间来做了。...passiveview仅仅用来展示,presenter告诉passiveview什么时候展示.我比较热衷于MVP架构.经常有人问我为什么我建议使用passiveview,而不是控制器或MVP派生的其他模式...第一部分总结这是这个系列博客的第一篇.这篇文章中我们使用了MVP模式,并且重构了一下从后端加载数据的方法.主要任务就是将大的复杂的任务拆分成小的可重用的组件,如ItemsLoader,Page,Router

    18010
    领券