作者:Stack Huang 很多团队都有这个问题,一个项目的代码本来开始设计得好好的,一段时间以后,代码就会变得难以理解,难以维护,难以修改。为什么?我一直在思考这个问题。我们先看一个人的情况。1.程序员的成长新手的代码新手的代码没有经验,基本不考虑代码设计,代码规模稍稍大一点则自己就乱了。进阶者的代码小规模的时候大规模的时候进阶者已经知道如何设计代码,懂得代码规则,但一般局限于一个模块。
作者简介:于航,PayPal Senior Software Engineer,在 PayPal 上海负责 Global GRT 平台相关的技术研发工作。曾任职于阿里巴巴、Tapatalk 等企业。freeCodeCamp 上海社区负责人。研究领域主要为前端基础技术架构、Serverless、WebAssembly、LLVM 及编译器等相关方向。说到 Web 前端开发,我们首先能够想到的是浏览器
第一部分: 处理代码的细节(代码的表面)处理代码的细节,主要分为如下的几个方向,check:善于防守, 考虑代码的健壮性.好的样式.精心布局.为文件和函数以及各部分起个好名字.良好的注释.错误处理,处理好可能会出现的错误.保证不崩溃.逻辑清晰,可理解.1. 防御性防御性的诱因:恶意用户客户端错误的使用运行环境不完整外部运行库问题如果可以使用函数局部变量,就不要使用全局变量.如果能使用循环体内的变量
转载 2023-10-16 22:25:57
159阅读
背景说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。的
在复习设计模式的知识点,首先复习的是单一职责原则。这个原则本身理解简单,实践却并不容易,需要在编码和架构设计的过程中,不仅对代码本身做的事了解,还需要对业务有总体了解,这样才知道怎么划分职责,服务化的过程中怎么拆分服务。之前看过梁桂钊写过类似的东西,记不起来了,现在再去看看。我的目标是:弄明白应该如何拆分类或者服务,有没有具体的最佳实践或者指导原则。分层思想,将系统横向分割,根据业务职责划分,比如
重要的核心代码,是不希望被非核心成员,或者新招来的程序接触到的。否则,招个新程序,人家试用期没过,反倒把你代码拷走了,回头想攻击、破解、贩卖,都是分分钟的事儿。这种事儿,我已经见过不止一次了。本文就讲一下,如何去做代码保护。防止核心(底层)代码泄露。代码保护的基本需求:1,不影响被防范的成员(比如新程序员)工作。让其能正常运行、调试、查看日志等。2,对核心代码完全封死,需要保护的部分,完全不可见。
转载 2024-05-30 08:40:37
23阅读
PCB线路板三防漆——盐雾测试完成后如何判断品质?盐雾腐蚀是一种常见的很有破坏性的大气腐蚀,特别对应用在与海洋、盐碱环境的PCB板三防漆,盐雾腐蚀验证尤其重要。Pcb板三防漆做完盐雾测试后,很多人或许不知道如何去评判产品是否合格,今天小编就和大家分享一些评判方法,具体操作如下:一、评级法 Pcb板三防漆盐雾测试完成后,将PCB板表面的盐结晶用流动的清水洗掉,在光照良好的环境下,用肉眼仔细观察产品表
服务器后端发展三个阶段:面向过程脚本:初始简单,业务复杂后,维护难度指数上升。--> 基本不使用面向数据库表:初始难度中,业务复杂后,维护难度延迟后再指数上升。--> 目前市面主流面向业务模型:以领域模型替代替数据库表模型( DDD+SOA微服务:事件驱动的CQRS读写分离架构)DDD内核领域驱动设计是一种由领域模型来驱动系统设计的思想,不是通过数据库表来驱动系统设计。领域模
分享一个关于用多态模式来编写松耦合的增删改查业务逻辑。在讲这篇文章之前先说一说为什么要这么做(也可以直接跳过),每一个开发者一开始开发一个项目时都想把这个新项目的代码写的高质量、高维护、高扩展、甚至尽量的做到高内聚低耦合。但是往往一开始还能掌控项目代码,后面随着业务需求的增加,以及一些临时的改需求打补丁等操作会让你的代码越来越膨胀,直到你自己选择放弃治疗。首先考虑一个问题,我们为什么要使用面向对象
最近无锡出现了疫情…好多事都被打乱了,半夜11点多出来做核酸本来非常不开心,但是看到大白们后突然就释怀了,不得不说他们更辛苦,也理应更气愤,一弄就是整个通宵,致敬每一位因疫情而身不由己的天使们…加油…前言在上一章节中我们讲述了如何给函数与方法进行规范化的处理(上一章节地址:《代码规范》如何写出干净的代码(二)函数与方法),那么在这一章节,则是要主要对代码深层嵌套的问题做一些分享和处理;耐心看完,你
1、背景说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦
         过去一年里我们团队做了大量的老系统重构和迁移,其中有大量的代码属于流水账代码。通常能看到是开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用性比较差。       
网上也看到一些防腐的优秀文章,在实际的开发项目中,不可避免的,我们也使用到了防腐,对防腐,简单总结一下:1. 防腐的意义是什么?防腐隔离上游的功能,防腐通过已有接口和外部系统交互,在内部做己方和他方模型的转换。简单来说,防腐一般为了隔离两个系统之间的变化,防止一个系统的微小变化会影响到另外一个系统;还有一个场景,两个系统的技术栈不一致,所以需要一代理来兼容。2. 防腐的职责(1)
转载 2023-08-29 15:50:45
206阅读
点击上方关注 前端技术江湖,一起学习,天天进步作者简介:于航,PayPal Senior Software Engineer,在 PayPal 上海负责 Global GRT 平台相关的技术研发工作。曾任职于阿里巴巴、Tapatalk 等企业。freeCodeCamp 上海社区负责人。研究领域主要为前端基础技术架构、Serverless、WebAssembly、LLVM 及编译器等相关方
DDD防腐设计 本文主旨防腐核心思想。防腐设计思路。门面和适配器实现防腐防腐(Anti-Corruption Layer)思想:通过引入一个间接的,就可以有效隔离限界上下文之间的耦合。防腐往往属于下游限界上下文, 用以隔绝上游限界上下文可能发生的变化。即使上游发生了变化,影响的也仅仅是防腐中的单一变化点,只要防腐的接口不变,下游限界上下文的其他实现就不会受到影响。缺点
防腐软件架构是一种在软件开发过程中常用的设计模式,它可以将外部依赖与内部业务逻辑相分离,降低系统间的耦合度,提高代码的可维护性和可测试性。对于刚入行的小白来说,了解并掌握防腐软件架构是非常重要的。下面我将为你介绍防腐软件架构的实现流程,并给出每个步骤的代码示例。 整体流程如下所示: ```mermaid gantt dateFormat YYYY-MM-DD title 防腐软件架构
原创 2024-02-07 08:29:52
148阅读
重构背景及原因  最近由于项目组的人员在不断扩充,导致项目中代码风格各异,大有百花齐放甚至怒放之势。考虑到团队的生存与发展,经过众人多次舌战之后,最终决定项目组根据业务分成几个小分队,以加强团队管理与提高效率,同时也能培养阶梯人才。各个小分队为了“统一”代码风格,提高成员的代码能力以便最终能提高项目代码质量,减少以后的维护成本,最终决定“每日”进行小组内的代码走查/审查(Code Review),
转载 2023-10-18 18:30:06
220阅读
当提到系统间交互的时候,人们都会想到大名鼎鼎的防腐,即用一个 Adaptor 进行系统间模型的转换,用来防止其他系统的模型变更对本系统造成影响。但是在实践这个模式的过程中,我们是否常常遇到如下问题:业务代码只有三行,模型转换代码却写了几十行为了给前端增加一个返回值,需要给整条链路上的每个模型增加一个属性,可链路上还会涉及好几个系统,一不小心漏加,还会导致 bug明明是类似的东西,在不同接口中却是
转载 2023-08-17 22:10:17
552阅读
定义防腐\防损(Anti-corruption layer)介于新应用和遗留应用之间,用于确保新应用的设计不受遗留应用的限制。是一种在不同应用间转换的机制。创建一个防腐,以根据客户端自己的域模型为客户提供功能。该通过其现有接口与另一个系统进行通信,几乎不需要或不需要对其进行任何修改。因此,防腐隔离不仅是为了保护您免受混乱的代码的侵害,还在于分离不同的域并确保它们在将来保持分离。防腐是将
转载 2023-08-06 21:22:03
385阅读
 同时,开播平台与同级的业务平台一起协作,才能支撑起完整的开播工具产品能力,如语聊房业务需要开播工具管理平台(开播工具类支持)、主播互动平台(主播互动能力支持)、流媒体服务端共同参与才能完成,从不同的维度帮助开播工具生态完善化。一些涉及到的业务/技术名词,在此我们也做出列举并做出简单介绍:名词名词简述领域驱动设计(DDD)DDD 是 Domain-Driven Design 的缩写,是
  • 1
  • 2
  • 3
  • 4
  • 5