接口分离原则 在面向对象编程中,接口是一个非常重要的武器。接口所表达的是客户端代码需求和需求具体实现之间的边界。接口分离原则主张接口应该足够小,大而全的契约(接口)是毫无意义的。...,代码量减少了,也没有那么多的直托方法,相应的测试工作量也变少了。...在非对称架构中,例如命令查询责任分离模式(读写分离),意图就是指导你去做一些接口分离的动作。 数据库(表)的设计本身是面向数据,面向集合的;而现在的主流编程语言都有面向对象的一面。...示意图如下: 客户端构建 接口的设计(无论是分离或是其他方式产生的)会影响实现接口的类型以及使用该接口的客户端。如果客户端要使用接口,就必须先以某种方式获得接口实例。...我们都应该在创建任何接口时牢记接口分离这个技术原则,而且最好是从一开始就应用接口分离原则。 参考 《C#敏捷开发实践》 -----END-----
什么是前后端分离开发?前后端分离开发 是一种将Web开发中的前端(UI展示层)和后端(业务逻辑层)完全分离开来的开发模式。...传统的Web开发中,前后端代码通常紧密耦合在一起,前端通过页面渲染直接调用后端的业务逻辑。而在前后端分离的模式下,前端和后端通过明确的API接口进行通信,独立开发、独立部署和独立运行。...随着JavaScript框架(如React、Vue、Angular)的出现,前端技术变得越来越复杂和强大,前端开发可以独立于后端处理更复杂的交互逻辑、数据可视化和UI设计。...团队协作和开发效率在传统的开发模式中,前端和后端的代码紧密耦合,往往需要协同开发,前后端开发人员的工作进度和实现细节紧密相连,这种耦合性导致开发进度较慢、效率低下。...前后端分离的优势高效的开发和部署 前后端分离后,前端和后端可以并行开发,前端开发不再受制于后端开发的进度,后端开发也可以专注于业务逻辑和数据库层的设计。
设计很重要(2010年): URL 是通用的。...当我回想起这些年来我遇到的优秀URL设计的例子[1]时——当我看到它们时,我停下来想“哇,这真是太好了!”——这些是我想到的几个。.../team-communication slack.com/is/everything-in-one-place slack.com/is/wherever-you-are 我记得我对这种将讲故事活动的设计一直带到...unpkg的主页说: unpkg.com/:package@:version/:file 在这种情况下,URL可以是产品本身,这使得其设计更加重要[2] What’s Yours?...这些是多年来我喜欢使用或看到的 URL 的几个示例。我敢肯定还有其他人,但我很好奇你最喜欢的是什么? 我在“出色的URL设计”方面没有找到很多好资源。Alex这篇文章还不错。
良好设计的API = 快乐的程序员 ?。 应用程序接口(API)是一种接口,它让应用程序可以轻松地使用另一个应用程序的数据和资源,API 对于一个产品或公司的成功至关重要。...如果没有它,你将不得不设计和开发自己的地图数据库。这样的话,在地图上显示一个位置需要花费多少时间? 为什么要使用 API?...在大多数实际场景中,数据模型 已经存在,但由于我们将讨论 API 设计最佳实践,我将从头开始说起。...数据建模与结构化 以 API 为中心对您的数据进行建模,是设计易于创建、维护和更新 API 的第一步 在设计 API 时,尽量考虑使用通用的术语,而不是使用内部的复杂业务术语,因为这些术语在公司外可能不为人所知...这些就是设计 API 的最佳实践。它让你的 API 更健壮、简洁并易于与其他应用程序集成。 请记住。 良好设计的API = 快乐的程序员 ?。
来源:http://t.cn/EhVCDAW 一、URL 设计 二、状态码 三、服务器回应 四、参考链接 ---- RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。...它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。 ?...img 一、URL 设计 1.1 动词 + 宾语 RESTful 的核心思想就是,客户端发出的数据操作指令都是"动词 + 宾语"的结构。...POST /api/Person/4 HTTP/1.1 X-HTTP-Method-Override: PUT 上面代码中,X-HTTP-Method-Override指定本次请求的方法是PUT,而不是...GET: 200 OK POST: 201 Created PUT: 200 OK PATCH: 200 OK DELETE: 204 No Content 上面代码中,POST返回201状态码,表示生成了新的资源
随着移动设备被越来越多的使用,极简主义的设计思想也伴随着流行开来。...设计师想要用更少的内容表达更多的信息 但是另一方面,要实现极简主义的合理应用也是有些棘手的。 它迫使设计师要用更少的东西传达更多的信息。...本文就将分享一些设计想法给大家,希望帮到你们: 1、删除所有额外元素——确保设计中的每一项要素都是有意义的 对于一个简约设计,你没有松动的余地。 页面上的每个元素都是经过深思熟虑的。...但是,限制颜色的使用并不意味着你只能在黑白和白色之外选择一种主色。 简约设计的思想是说要准确地描绘你的设计想法并创建清晰的层次结构,务必只使用必要的颜色,不要多余。 ?...这意味着,极简主义设计的最终目标是实现返璞归真,在最纯粹的样式中,还原最基本的东西,创建一个无缝流畅的设计体验。这就要求一个设计师既能遵从可用性的基本要求,又要保持精益求精的设计追求。
翻译:CSDN/苏本如(id:CSDNnews),英文作者:Julia Evans 相信很多开发者对于代码调试最难的地方是什么依然云里雾里,而且这不仅仅是初学者需要面临的问题——本文中就来探讨下何为代码调试的最佳指南...确实有时候一个bug不是我写的代码造成的!但一般来说,在一个已经验证的库和我上个月编写的代码之间,通常是我上个月编写的代码才是真正的问题所在 。...; 文档是正确的; 我正在查看的代码在某个时刻被执行; 这两段代码是按顺序执行的,而不是并行执行的; 这段代码在调试模式和发布模式下编译(使用或不使用-O2开关,或…)时,会做同样的事情; 编译器没有错误...Xcode可以在你遇到断点时播放声音(并且代码不停止而继续执行下去)。我把它们放在代码中的某个位置,然后听嗡嗡的叮当声来指示代码中发生的错误”(欲知详情,请查看上面提到的推文)。...,并且将一些错误如 NameError, IOError,等等分离开来。
公共用例设计实践 by:授客 QQ:1033553122 背景介绍(大致如下): 图一:我的-个人资料-动态 图二:发现 ? ? ? ? 图三:动态转发 图四:动态评论 ? ? ?...、动态详情(正文)界面 转发,评论对话框都有多种情况,怎么设计用例?...且动态详情页面的信息和列表页面的信息(转发数,评论数,赞数等是保持一致的) 到此:我们可以划分出两个公用模块:动态列表+动态详情 接下来,对公用模块进行用例设计分析 第二:分析操作流程 动态列表页...1,为0则不显示 对比上述动态列表和动态详情页的操作,我们可以分离出共同点: 评论按钮操作: 评论按钮>>评论对话框>>返回对话框所在父界面>>评论数加1 转发按钮操作: 转发按钮>>转发对话框...说明:思路是这样的: 1. 动态评论,转发动态,赞动态为 动态列表、动态详情页面的公共用例 2. 动态列表、动态详情模块的用例作为 发现、我的-个人资料-动态模块的公共用例
Robert Martin曾说过"在代码阅读中说脏话的频率是衡量代码质量额唯一标准"。同时,代码的写法应当使别人理解它所需的时间最小化,也就是说我们写的代码是给人看的而不是给机器看的。...那么,如何编写优雅代码呢?可以从思想层面和具体技巧层面来优化代码,思想层面指的是遵循面向对象设计原则,本期介绍的是具体技巧。 1. 代码总是越短越好吗? assert((!...bucket.isOccupied()); } 减少代码行数是一个好目标,但是让阅读代码的事件最小化是个更好的目标。 2....因此,我们可以用一个更加自我说明的名字,例如: void releaseRegistryHandle(registryKey key); 13.为代码中的瑕疵写注释 // TODO:采用更快算法或者当代码没有完成时...ok);其次处理掉简单的情况,这有利于让if和else处理代码在同一个屏幕内可见。 19. 通过提早返回减少嵌套 使用提前返回的机制,可以把函数的嵌套层级变浅。
代码重构(Code Refactoring)是一种优化代码结构和可读性的方法,通过改进代码设计,使其更容易理解和维护,同时不会改变代码的外部行为。...重构是提高代码质量的重要手段,特别是在长期项目中,代码重构可以显著提高项目的可维护性和可扩展性。本文将详细介绍Python中的代码重构方法,涵盖重构的基本原则、常见的重构技术、工具和实际应用示例。...重构的基本原则 保持代码行为不变:重构不应该改变代码的外部行为,只是优化内部结构。 小步前进:逐步进行小的改动,每次重构后运行测试确保没有引入新的问题。...持续重构:将重构作为日常开发的一部分,而不是等到代码质量变得无法维护时再进行大规模重构。 编写测试:在重构之前,确保有足够的单元测试覆盖代码的功能,这样可以在重构后验证代码的正确性。...常见的重构技术 提取函数(Extract Function) 将代码块提取到独立的函数中,以提高代码的可读性和复用性。
从14年到现在在前后分离上面也实践了近3年的时间,项目大大小小的也差不多4,5个吧,但是却从来没有一个是自己觉得很满意的,其中的原由和心酸可能只有自己才能体会了。...前后端分离实践有感 现在到处都是前后端分离的实践。然而一些项目在从一体化 Web 设计转向前后端分离的架构时,仍然会碰见各种各样的问题。...我们在实践初期,由于前端团队力量相对薄弱,同时按照惯例,所有业务处理几乎都是由后端来设计的,前端处理过程中常常发现接口定义不符合用户操作流程等问题。...接口设计 接口分后端服务实现和前端调用两个部分,技术上并不难,因为都是成熟的技术,接口设计才是难点。前面提到前后端会产生一些矛盾。...,其中 状态码:HTTP 状态码或响应数据中特定的状态属性 消息:通常是放在响应内容中,作为数据的一部分 数据:根据接口协议,可能是各种格式,当前最流行的是 JSON 我们在实践中使用 JSON 形式,
Web API 近几年变得越来越火,而简洁的 API 设计在多后端系统交互应用中也变得尤为重要。通常,会使用 RESTful API 来作为我们的 Web API 。...本文介绍了几种简洁 RESTful API 设计的最佳实践。...客户端需要根据服务器提供的相关文档来了解所暴露的资源和对应的操作。当服务器发生了变化时,如修改了资源的 URI,客户端也需要进行相应的修改。...正确用法如下: /blog/api/v1 充分使用 HTTP 状态码来处理错误 HTTP状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的3位数字代码。...在设计 API 处理错误时,应该充分使用 HTTP 状态码,而不是简单的抛出个 “500 – Internal Server Error(内部服务器错误)” 所有的异常都应该有个错误的 payload
哪些不涉及资源操作的URL呢?实现分页和版本控制的最好方法是什么?因为有太多的疑问,设计RESTful API变得很棘手。...在这篇文章中,我们来看一下RESTful API设计,并给出一个最佳实践方案。...不要这么设计: /getAllEmployees /getAllExternalEmployees /createEmployee /updateEmployee 更好的设计: GET /employees...- 如果客户端发生错误(例如客户端发送无效请求或未被授权) 5xx – 服务器错误 - 如果服务器发生错误(例如,尝试处理请求时出错) 参考维基百科上的HTTP状态代码。...因此,最好遵循JavaScript代码通用规范。
参考github的api,总结一份实践经验,方便以后设计api查阅。 ? 使用https 考虑api的安全性,建议使用https访问。 证书可使用let’s encrypt的免费证书。...api访问地址与版本 访问地址使用统一的api前缀,或者使用二级域名,版本号建议显式的放在url中。...客户端使用content-type来标记使用的格式。 url设计 操作针对资源进行,使用url来代表资源,使用http请求方法来指明进行的操作。...根据执行情况,选择对应的状态码进行返回。可以使用自定义的状态码,但是也应该同时指明响应的状态码。具体的响应状态码含义可以,可以访问这个网站。...文档 文档应该声明接口的访问方法,接口地址,应该携带的请求头信息,响应格式,响应内容举例,错误码以及接口的使用场景。
背景 目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API格式如何?...我希望可以设计出容易使用,容易部署,并且足够灵活的API,本文因此而生。...API设计的基本要求 网上的很多关于API设计的观点都十分”学院派“,它们也许更有理论基础,但是有时却和现实世界脱轨(因此我是自由派)。...所以我这篇文章的目标是从实践的角度出发,给出当前网络应用的API设计最佳实践(当然,是我认为的最佳了~),如果觉得不合适,我不会遵从标准。...虽然前面我说没有一个万能的API设计标准。但确实有一个被普遍承认和遵守:RESTfu设计原则。它被Roy Felding提出(在他的”基于网络的软件架构“论文中第五章)。
项目资源的URL应该如何设计?用名词复数还是用名词单数?一个资源需要多少个URL?用哪种HTTP方法来创建一个新的资源?可选参数应该放在哪里?那些不涉及资源操作的URL呢?...实现分页和版本控制的最好方法是什么?因为有太多的疑问,设计RESTful API变得很棘手。在这篇文章中,我们来看一下RESTful API设计,并给出一个最佳实践方案。...不要这么设计: /getAllEmployees /getAllExternalEmployees /createEmployee /updateEmployee 更好的设计: GET /employees...- 如果客户端发生错误(例如客户端发送无效请求或未被授权) 5xx – 服务器错误 - 如果服务器发生错误(例如,尝试处理请求时出错) 参考维基百科上的HTTP状态代码。...因此,最好遵循JavaScript代码通用规范。
比如像有些客户比较重要的日志场景,或者电商数据等,这些数据可能都需要长期保留。那么这时候存储降本的方案就显得尤为重要,今天就和大家分享一下ES的存算分离方案。...一、快照备份原理浅析 ES的存算分离技术实现,是基于快照备份的功能,在快照的基础之上增加了可搜索的能力。在介绍可搜索快照之前,我们简单复习一下ES快照的基本知识。...,在恢复前还需要先将该red的索引删除,而通过 mount 挂载下来的索引,则自动从快照中恢复损坏的分片。...GET _async_search/{id} # 获取异步搜索的执行结果 DELETE _async_search/{id} # 删除异步搜索 图片 三、可搜索快照最佳实践 下面我们将演示可搜索快照实现的整条链路...我们关闭了默推荐的滚动策略,并且希望数据在写入的过程,当分片大小达到 20gb 或者当索引存在的时间达到 1 天时,索引发生滚动,生成一个新的索引,这样就可以控制单个索引的数据规模在一个可控范围内。
延迟队列的设计与最佳实践 在现代分布式系统中,延迟任务是一种非常重要的概念。它们可以用来处理需要特殊关注或执行的任务,如发邮件、推送消息或生成报告等。...为了实现这些任务,我们需要一种强大而可靠的工具,即延迟队列。 在本博客中,我们将介绍延迟队列的设计和最佳实践。我们将使用RabbitMQ和Redis两种技术来展示各自的实践方法,并提供操作步骤。...RabbitMQ延迟队列的最佳实践 在RabbitMQ中,延迟队列有三种不同的实现方法: 使用TTL和DLX:我们可以为消息设置一个TTL(time-to-live),表示该消息在一段时间后要被删除。...Redis延迟队列的最佳实践 在Redis中,我们可以使用zadd和zrangebyscore命令来创建和管理延迟队列。...这里我们使用list而不是set类型是因为list类型支持在头部或尾部添加元素,更符合队列的特点。 总结 本博客中,我们介绍了使用RabbitMQ和Redis实现延迟队列的设计和最佳实践。
领取专属 10元无门槛券
手把手带您无忧上云