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

聊聊如何让你的业务代码具有可扩展性

对一些新手程序员,他可能会直接写类似如下的代码 public void execute(){ doBefore(); doBiz(); doAfter...那我们今天来聊聊下使用spring + spi + aop + 责任链来实现上面的需求 代码实现过程分析 假设主流程只需做一次前置处理和一次后置处理,则伪代码如下 public void execute...当主流程需要多次前置处理和多次后置处理时,我们的代码可能就变成 public class CorMethodInterceptor implements MethodInterceptor {...com.github.lybgeek.cor.test.service..*.*(..)) 4、测试 观察控制台 [ed967e03593f8e190139e2701e9627e9.png] 发现处理器正常工作 总结 所谓的可扩展...本文的示例如果心细的朋友就会发现,这跟springmvc的拦截器实现是很像的 demo链接 https://github.com/lyb-geek/springboot-learning/tree/master

80030

如何写出可维护的 Java 代码

作为程序员,如何写出高质量可维护的代码,是一个老生常谈的话题,初级程序员可能是只要完成任务就行了,但当我们逐渐成为中高级程序员的时候,我们要考虑就不单单只是完成任务就行了,而更加要关注如果写出优雅可维护的代码...编写可测试的代码 所谓编写可测试的代码,意思是说让我们多写单元测试。...除了编写单元测试之外,我们还可以善用一些插件和工具,特别是在当下 AI 加持的时代,我们可以让 AI 来帮我们生成单元测试代码,这就又回到了我们昨天的文章,提到的 Github Copilot 了,它就可以帮我们一键生成单元测试...我们要明白一个道理,代码写出来是给人看的,所以我们要写出人能看懂的代码,我见过很多在写代码的时候有很多风骚的写法,纯粹是为了炫技,毫无实用价值,还增加了阅读成本,这样的行为是不可取的。...总结 以上是一些关于如何编写可维护 Java 代码的建议,我们在日常开发中要学会灵活运用。 另外要记住,编程不仅仅是一门科学,也是一种艺术。

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

    【用户亲启】JetBrains AI Assistant 2024.3触手可及!让代码补全更智能、更快速、更精准!

    这两种方式相结合,确保了快速、上下文感知的建议,同时在需要时提供云驱动的协助。 一年来的表现如何? 自 2023.3 版本发布以来,JetBrains 的代码补全表现稳定且持续增长。...此外,还限制了可以显示多行补全的位置,确保基于云的代码补全在保持直观和人性化的同时,生成代码的总量不变。...提升了项目意识并重新设计了上下文收集 通过离线和在线评估对不同的检索增强生成 (RAG) 策略进行评估后,官方选择了运行稳定、可预测的策略。...从开始输入到显示建议的整体补全延迟也大大缩短,即JetBrains AI Assistant新版本反应速度更快!...本地模型的速度相比云补全来说,肯定是更快;但就生成相关性的建议或代码来说,云补全始终优于本地模型。 JetBrains AI 代码补全的改进,不仅提高了开发效率,还提升了用户体验。

    40000

    让你的 JS 代码变得更加优雅且可维护

    枚举 对于上面判断 userRole 的代码,其实我们可以用更优雅的方式去实现,那就是 枚举 。...策略模式 维基百科上说:策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。 上面的代码依旧是可优化的,在这里我们可以利用策略模式来做进一层的优化。...更在状态 除了上面的方式之外,我们还可以利用“ 状态 ”的概念来写代码。在看代码之前,我们先了解下什么是 “有限状态机”。...不同的状态展示的 UI 也不同,所以我们以不同的状态划分好模块之后,代码写起来就会清晰很多,我们以 Vue 代码为例: // contants.js export const ORDER_STATUS...,以提高程序代码的模块化程度。

    1.2K10

    如何查看可综合C代码的中间结果

    但C测试文件的弊端在于只能查看待综合顶层函数的输出,而对于子函数(顶层函数中调用的函数)或者其他一些中间变量的输出结果无能为力。如果C仿真有错误,这说明本身算法描述可能有问题。...为此,一种方法是采用条件编译的方式,如下图所示,在头文件中定义了宏__ONLY_SIM__(图中代码第7行),在待综合函数中通过条件编译的方式输出中间变量xi、yi和zi,如代码的第33至第35行。...自定义宏意味着这个宏并不需要用户定义,是用户可以直接使用的。Xilinx建议只在可综合函数中使用该宏。因为这个宏只有在C综合时才有效。这样上述代码就可以更改为下图所示的方式。...由于代码中使用了#ifndef,因此,在C仿真时,__SYNTHESIS__没有生效,故可以输出中间结果。而在C综合时,__SYNTHESIS__生效,此时34行代码无效,不影响综合。 ?...同时,__SYNTHESIS__只在可综合函数中使用,无需用户定义,也不能在C测试文件中使用,否则会报错。

    1.2K20

    如何重构和清理 .NET 代码:编写安全且可维护的代码

    在本文中,我们将探讨 .NET 应用程序中的不良代码示例,并逐步演示如何根据干净的代码原则重构它,包括命名约定、配置管理、SQL 注入预防和更好的结构。...此示例存在几个影响可读性、可维护性和安全性的问题。我们将以此为起点,并在整篇文章中将其转换为干净、可维护的代码。 错误代码示例 此示例代码执行订单处理、验证并更新数据库中的订单状态。...这种方法将产生一个结构良好、可维护和可测试的解决方案。让我们来了解一下每个步骤。...用于管理事务和存储库交互的工作单元模式。 带有 MediatR 的 CQRS,用于处理命令、解耦操作并实现可扩展性。 FluentValidation 用于可重用、可测试的验证逻辑。...这种方法可确保您的应用程序易于维护、可扩展且具有弹性,从而为长期成功做好准备。

    59510

    代码的三大核心素养:如何同时兼顾可维护性、可扩展性、可测试性

    核心目标:写出 “能抗住业务迭代” 的代码 —— 既让当前开发者省心,也让未来的自己 / 同事少踩坑。..."8折" : "9折";}三、可扩展性:让代码 “能加、能改”可扩展性的核心是 “拥抱变化”:当业务新增需求、修改规则时,无需重构核心逻辑,仅通过 “新增代码” 或 “配置调整” 实现。1....:让代码 “能测、易测”可测试性的核心是 “能独立验证逻辑正确性”:无需依赖复杂环境,就能通过测试用例覆盖核心场景。...优秀的后端代码,经得起业务迭代的考验,也经得起时间的考验 —— 这不仅是技术能力的体现,更是对团队和未来自己的负责。从今天开始,试着在写代码时多问自己三个问题:别人能快速看懂我的代码吗?...(可维护性)新增需求时我需要改多少代码?(可扩展性)我能轻松写出测试用例覆盖核心场景吗?(可测试性)坚持下去,你的编码能力会在潜移默化中实现质的飞跃。

    16010

    如何提高 Web 可访问性,让残障人士拥有更好的体验?

    如果你创建了 Web 内容,那么即使从未写过一行代码或登录 CMS,你也可以在可访问性方面发挥作用。 你知道装饰性图片、信息性图片和功能性图片之间的区别吗?你知道为它们编写好的替换文本意味着什么吗?...现在,你对创建可访问 Web 内容的准则及其历史已经有了一些了解,让我们看看这对于你的网站究竟意味着什么。 让多媒体内容可访问 大部分人都知道,所有视频都需要字幕。...如果你确实想包括这些内容,那么你应该设法询问对方他们会如何描述自己。 让文本可访问 语言 为了使文本易于理解,你应该使用简单明了的语言。在短句和文本块中使用简单的词语。...你需要花费时间和精力来理解这些准则以及如何实现它们。 希望你现在对提高可访问性需要做的一些事情有了更多的了解,因为使网站内容可访问不仅仅是 Web 开发人员的责任。...即使你从来没有写过一行代码或登录 CMS,作为内容创造者的你所采取的步骤也可以影响可访问性。因为当你使网站具有可访问性时,就会使每个人都可以访问它。

    1.3K20

    如何将设计稿转成高度可维护的代码? | ArchSummit

    编辑|孙瑞瑞 在互联网行业蓬勃发展的今天,面对业务量暴增,定制化需求井喷的情况,传统的人力密集型研发早已无法解决这一问题。如何利用有限的人力吞吐更多的业务,是我们不断追求的永恒主题。...在过往,我们探索并实践过工程化、低代码化等方案,研发效能的提升已经到达了一个平台期,如何进一步提升研发效能,打通设计与研发的工作流程,实现规模化生产,仍是许多前端同学与设计同学一直关注的痛点问题。...”,在本次分享中,李伟涛老师将结合团队具体的业务场景,分享京东在设计稿转代码上的思路方案以及遇到的问题,带领大家全方位了解如何将设计稿转换成高度可维护的代码,从而减少前端工程师的工作量,提升开发效率,创造更多业务价值...目前很多设计稿转代码工具,依旧面临着许多技术难点问题,例如识别不全面、识别准确度不高、无法满足定制化需求等,设计要落地为代码,生成的代码结构往往也面临可维护性方面的挑战。...如何由设计稿生成静态代码,又如何让静态代码拥有灵魂,完美地还原设计稿,本次分享李伟涛老师将结合京东大促业务场景为大家带来最佳实践。

    1.1K30

    【JS】1724- 重学 JavaScript API - Drag and Drop API

    如何使用 使用拖放 API 主要包括以下 3 个步骤: 「定义可拖拽的(draggable)元素」:将需要拖动的元素标记为可拖拽,并指定相应的事件处理逻辑。...下面是一个简单的示例代码,演示了如何使用拖放 API : // 定义可拖拽的元素 const dragSource = document.getElementById("drag-source"); dragSource.addEventListener...下面是一个简单的示例代码,演示了如何使用拖放 API 实现图片库的拖放功能: .album { display: flex; justify-content: space-between...下面是一个简单的示例代码,演示了如何使用拖放 API 实现项目任务管理应用中的拖放功能: 代码,演示了如何使用拖放 API 实现页面生成器中的拖放功能: #canvas { border: 2px dashed #ccc; padding

    1.8K20

    17 Most popular Vue.js plugins

    教程地址:https://www.vuemastery.com/courses/beautify-with-vuetify/getting-started-with-vuetify 你是否曾纠结于如何让应用在视觉上看起来更吸引人...NuxtJS Nuxt 基于一个强大的模块化架构。你可以从 50 多个模块中进行选择,让你的开发变得更快、更简单。...主要特征: 支持触控设备 支持拖动手柄和可选文本 智能自动滚动 支持不同列表之间的拖放 没有 jQuery 依赖 保持同步 HTML 和查看模型列表 兼容 Vue.js 2.0 转换组 Vee-Validate...主要特征: 简单:熟悉且易于设置的声明式验证 ‍♀️灵活:同步、异步、字段级或表单级验证 ⚡️快速:使用直观的 API 和较小的占用空间更快地构建更快的表单 Minimal:只处理复杂的表单问题,让您完全控制其他一切...3 Forms 课程中介绍了如何使用这个库。

    7.5K30

    如何编写可重入(Reentrant)且线程安全(Thread-safe)的代码

    0、前言 单线程的进程中仅有一个控制流。这种进程执行的代码无需可重入或线程安全。在多线程的程序中,同一函数或资源可能被多个控制流并发访问。为保护资源完整性,多线程程序编码必须可重入且线程安全。...2、如何编写可重入函数 在大部分情况下,不可重入的函数修改为可重入函数时,必须修改函数的对外接口。不可重入的函数不能用于多线程。此外,也许不可能让某个不可重入的函数是线程安全的。...使用第一种方法将其改写为可重入的,函数将类似于如下代码片段: /* reentrant function (a poor solution) */ char *strtoupper(char *string...= 0; while (my_char = reentrant_lowercase_c(my_string, &my_index)) { ... } 3、如何编写线程安全的函数 在多线程程序中...程序员必须确保使用该库的线程唯一性;否则,程序行为不可预料,甚至可能崩溃。 4.2 改写函数库 ---- 以下几点展示了将现有库转换为可重入和线程安全库的主要步骤(仅适用于 C 语言代码库)。

    95531

    如何编写可重入(Reentrant)且线程安全(Thread-safe)的代码

    这种进程执行的代码无需可重入或线程安全。在多线程的程序中,同一函数或资源可能被多个控制流并发访问。为保护资源完整性,多线程程序编码必须可重入且线程安全。...2、如何编写可重入函数 在大部分情况下,不可重入的函数修改为可重入函数时,必须修改函数的对外接口。不可重入的函数不能用于多线程。此外,也许不可能让某个不可重入的函数是线程安全的。...使用第一种方法将其改写为可重入的,函数将类似于如下代码片段: /* reentrant function (a poor solution) */ char *strtoupper(char *string...= 0; while (my_char = reentrant_lowercase_c(my_string, &my_index)) { ... } 3、如何编写线程安全的函数 在多线程程序中...程序员必须确保使用该库的线程唯一性;否则,程序行为不可预料,甚至可能崩溃。 4.2 改写函数库 ---- 以下几点展示了将现有库转换为可重入和线程安全库的主要步骤(仅适用于 C 语言代码库)。

    48120

    DeepWiki:让项目从此没有“看不懂”的代码!可私有化部署使用

    对话式AI助手支持自然语言提问(如“如何实现用户鉴权?”),基于RAG技术结合代码上下文给出精准解答,并支持画流程图,时序图,业务架构图、技术架构图等。...技术决策“智能顾问” 在评估LLM仓库技术选型时,DeepWiki的依赖关系图可识别冗余模块,其漏洞检测功能(如SQL注入风险提示)为安全审计提供关键支持。...比如:生成hbase的架构设计图。 是不是很惊艳?也可以向DeepWiki问其他问题试试看。 四、私有仓库如何使用?...开发者可集成内部大模型,适配GitLab私有仓库,实现代码不出域的安全管控。...最后,把我的座右铭送给大家:执行是消除焦虑的有效办法,明确并拆解自己的目标,一直行动,剩下的交给时间。共勉

    2.9K10

    drag事件详解:html5鼠标拖动排序及resize实现方案分析及实践

    对列表进行拖动排序,尺寸改变。之前一般会使用jQuery-UI(interactjs更加纯粹)。其通过mousedown、mousemove、mouseup这三个事件来实现页面元素被鼠标拖拽的效果。...相比之前用jquery-UI等库实现,更加方便(省去计坐标计算等)。...为了使元素可拖动,必须把 draggable 属性设置为 true : test draggable属性:设置元素是否可拖动。...拖放事件事件详情 一个元素被拖放,他可能会经过很多个元素上,最终到达想要放置的元素内。这里,我暂时把被拖放的元素称为源对象,被经过的元素称为过程对象,到达的元素称为目标对象。...,被拖拽对象离开目标对象时触发 拖动事件列表 每一个可拖动的元素,在拖动过程中,都会经历三个过程,拖动开始-->拖动过程中--> 拖动结束 在拖动目标上触发事件 (源元素-被拖动的元素): ondragstart

    8.3K21

    html5鼠标拖动排序及resize实现方案分析及实践

    对列表进行拖动排序,尺寸改变。之前一般会使用jQuery-UI。其通过mousedown、mousemove、mouseup这三个事件来实现页面元素被鼠标拖拽的效果。...相比之前用jquery-UI等库实现,更加方便(省去计坐标计算等)。...为了使元素可拖动,必须把 draggable 属性设置为 true : test[object Object] 整个拖拽事件触发的顺序如下...这里,我暂时把被拖放的元素称为源对象,被经过的元素称为过程对象,到达的元素称为目标对象。不同的对象产生不同的拖放事件。...如FileReader.readAsDataURL与FileReader.onload 拖动元素排序实现 之前写了两篇文章,有读者留言希望看代码,这次大致写了下 https://codepen.io

    3.9K10

    如何编写可测试的代码:两个核心三个思路

    因此,本文以 Go 语言为例,讲讲如何设计和编写容易测试的业务代码。 其实,如果有意识地设计数据结构和函数接口,其实我们的代码是很容易进行测试的,不需要任何奇技淫巧。...那接下来我们就进入正题:如何编写易于测试的业务代码。 01、把大象放进冰箱 把大象装进冰箱有几个步骤? 打开冰箱门; 把大象塞进去; 关上冰箱门。...然而,如果在写业务代码时有意识地稍微考虑一下可测试性,那么写单元测倒是真的是一件挺容易的事情,主要就两步: 设置好所有入参的值; 判断输出的值是否如预期。...monkeyPatch 应该只出现在给老项目补单测当中,我还是更多地讲讲如何编写可测试代码。...,屏蔽掉系统差异、时间差异等各种程序以外的因素,让测试代码每次都能跑在相同的环境下。

    98341

    研发代码等核心数据的外发 如何实现可管控?

    随着互联网和信息化的发展,文件的交换渠道越来越多样:个人邮件、QQ、微信、网盘等即时通讯传输的便利,让公司重要文件的流通范围也变得原来越广泛,企业核心文件在业务交流中存在泄露风险,无疑将给企业带来巨大的损失...,尤其是科技研发型企业,研发代码等核心数据的泄露将会给企业带来致命的打击。...所以企业需要重视内部防护,这个防护包括数据外发这个环节,因为在日常工作和业务中,有大批量的信息需要与企业内外部的人员进行交换,因此如何保障核心数据外发后不被非法扩散和泄密已经成为企业的重点关注。...那么,类似于科技研发型企业这种有很多研发代码等核心数据的企业,要如何安全的把这些数据发送出去呢?推荐可以看看《文件安全外发的5个误区》这份资料,免费下载的,先对安全外发有个系统的了解。...,综合使用人员、流程以及技术措施来更快更好的进行侦测和响应; 建立安全事件衡量矩阵和指标,使用它们来驱动最佳安全实践; 强化安全技能评估并且提供必要的安全意识培训以填补信息安全认知差距; 有了核心数据就要保证核心数据的安全

    1.5K00

    使用 React-DnD 打造简易低代码平台

    那么对于开发者而言,我们应该如何入手开发呢?...“拖拽”实现 关键词就是“拖拽”,其实“拖拽”的交互方式早在 Jquery 时代就有,关于拖拽在前端实现主要分为 2 种 是以 jquery-ui 为代表的 draggable 和 Droppable...,用于约束“拖”和“放”组件的关系,如果字符串不一致就无法回调事件,主要是为了避免页面中多个拖放的实例 item 就是拖动时候传递的数据 end 是拖放结束后的回调 collect 用于获得拖动的状态,...定义 JSON 接下来我们要: 定义可拖动的组件类型 每个组件类型对应的渲染组件 每个组件的属性设置 先来定义几个可拖动的字段吧,比如最基本的数据类型,div、h1、 p 标签都是一个组件,那就我先定义出以下字段类型...嵌套拖动 基本组件一般可以嵌套的,比如我现在想要拖动出下图的页面效果 实际上我需要生成 JSON 树,然后根据 JSON 树渲染出页面。

    7.3K20

    一周技术学习笔记(第61期)-如何编写可测试的代码

    如何编写可测试的代码 重构和测试是要成对出现的。 重构是在不改变原先功能的前提下就行的代码调整。那你怎么确保没有改变原先的功能呢,就需要测试。...要测试,不是说,我硬写一个Junit、Spock,最关键的是你的代码要可测试。 下面这段代码可测试吗?...代码片段选自极客专栏《遗留系统现代化实战》 看到这样的代码,你可能会说,这质量还行啊,可读性不错,职责也比较清晰。的确是这样,但这样的代码却是不可测的。...SRP最贴切的定义 这周一天,我在群里问大家一个问题,关于单一职责哪一种说法最正确。 SRP的定义其实经历过三次更新,也就是从只干一件事,到只有一个修改原因,再到只对一类行为者负责。...《云原生混沌工程实践》 如何实现系统的高可用,具体都有哪些手段呢? 那么能不能提前发现,或者我们可以人为地做什么动作,能够验证整个应用系统架构的鲁棒性到底如何呢?

    48320
    领券