• 站在任何街角,观看交通一段时间,来来往往都是汽车。它们具有相同的基本结构:四个轮子,一个发动机,一个方向盘,用汽油或柴油运行。然而,它们在颜色,马力,形状,特征甚至可能使用的汽油类型方面差异很大。每条繁忙的街道都是不同车型的杂音,但我们看到的大多数车辆,每个人都会同意,是一辆汽车。是的,根据
  • 这篇文章是关于John Ousterhout的新书“软件设计哲学”的评论:事实证明,写一篇有关如何将俄罗斯方块AI实现为容器化的Kotlin微服务的文章要比如何编写好的代码要容易得多。170页的“软件设计哲学”(以下简称PoSD)是一本不起眼的书。John的背景是系统而不是软 icon
  • 让我们看一些在实践中经常发生的过早抽象的具体案例。这些都是基于在我们自己的代码库中找到的真实示例。职责抽象得太细了使用设计模式没有真正的好处性能过早优化低耦合无处不在让我们分别仔细看看其中的每一个。 icon
  • 可汗学院正在完成一个巨大的项目,将我们的后端从Python迁移到Go。虽然这个项目的主要目标是迁移到一个过时的平台上,但我们看到了改进我们代码的机会,而不仅仅是直接移植。 我们想改进的一件大事是我们的Python代码库中的隐性依赖关系。访问当前请求 icon
  • 简单地说,交集类型是通过组合至少两种不同类型而创建的匿名类型的形式。想象一下,我们需要模拟两种类型的动物: 那些可以飞的 那些可以游泳的 我们可以简单地实现两个接口: icon
  • 海仑定律(Hyrum's Law)是软件工程中一种观察经验: icon
  • Liskov替换原则是SOLID的一部分,该缩写缩写总共捆绑了5条设计原则。它通常与干净的代码相关联。但是到底是什么,对您来说重要吗,您甚至应该关心吗? 它是什么?如果S是T的子类型,则可以用类型S的对象替换类型 icon
  • 目的使用空接口作为标记来区分特殊处理对象。 icon
  • 我已经用Java编程超过五年了,并且认为我知道重载和覆盖是如何工作的。只有一次我开始思考并写下以下的角落案例,我才意识到我几乎不知道它。为了游戏化这些细微差别,我在下面将它们列为一系列谜题。 单一分发假设有 icon
  • 你在控制器中放了多少个动作Action?5-6?20?如果我告诉你我的限制只能是一种Action方法,你会怎么说?可以肯定地说,大多数Web应用程序在其控制器中都有太多的Action操作方法,但它很快就会失去控制,违背单一责任原则违规行为。我一直在和朋友谈论这个问题,他们建议在一个控 icon
  • 我从很多人那里收到了同样的问题:为什么你甚至会使用接口?当涉及到接口时,人们倾向于认为他们唯一的用途是当你有多个实现时,你可以轻松地将它们切换出来。然而,大多数人在他们的应用程序中没有特定功能的多个实现。那么为什么你会使用接口呢?在我们的IDE中的所有重构工具都很强大之后我们可以在以 icon
  • 这篇文章认为接口interface代表的间接和abstract代表的抽象并不是一回事,间接是为了分离,松耦合,而抽象是为了将细节剥离。这是软件设计中两个不同维度。然后他谈了这两种情况的四个组合: 没有间接但是又抽象,也就是直接但抽象,他以Strin icon
  • 2015 年,苹果推出了一个新概念——面向协议的编程。我敢肯定,您正在使用这些技巧中的大部分,甚至全部。案 icon
  • 通过我们的 20 个最重要的抽象原理问题来掌握您的面向对象编程面试。提升您的理解并展示您的抽象能力,这是有效软件设计的关键概念。准备好在下一次技术面试中取得好成绩! 1. OOP 中抽象原则背后的基本思想是什么?答:抽象原则强调关注本质特征,隐藏非 icon
  • Java 9 中私有接口方法的出现标志着 Java 编程发展的关键时刻,它引入了一个显着拓宽接口设计和实现视野的功能。在此增强之前,Java 中的接口在功能上受到一定限制,主要用作实现类的契约,无法完全封装实现细节。在接口中包含私有方法解决了这个限制,允许更复杂和封装的代码设计。此功能有助于在接口中 icon
  • 理解接口和@interface之间的区别 至关重要,因为它们在 Java 编程中扮演着不同的角色。接口用于定义类型和契约。@ interface用于向编译器或运行时提供元数据。 让我们深入了解一下什么是接口interface 和@interface 以及它 icon
  • Rust 中的Trait 定义了特定类型所具有的功能,并且可以与其他类型共享。它指定了可以在类型上调用的方法。 例如,假设我们有不同类型的文本数据: 一个NewsArticle用于新闻报道的结构 和一个Tweet用于推文的结构。 < icon