• 将业务规则与琐碎的验证相混淆,将不会带来任何好处。当你所拥有的只是琐碎的验证时,不要把事情复杂化。 让我们立即从一个非常简单的代码示例开始。这是一个有两个条件的单一方法。 第一个是,如果数量参数小于或等于零,我们将抛出异常。
  • 我学习了DDD领域驱动设计、六边形架构和面向数据的编程。我在 Airbnb与Daniel Low在Krispr icon
  • 甲骨文java语言架构师Brian Goetz提议JDK增加with功能,用来增强Record功能。 记录Record和内联类是 Java 中两种新形式的浅不可变类:如果我们的Point记录想要公开一种“set”x和y组件的方法,它必须编写 icon
  • 随着Java 18将在两周内作为生产版本发布,Java 19 开始形成。标准 Java的下一个版本JDK19将通过API对Java运行时JVM以外的代码实现调用操作,还可能涵盖从通用泛型到 RISC-V 端口的各种功能。现在OpenJDK社区流传的Java 19第一个提案是一 icon
  • 在 Rust 中创建自定义数据类型有两种方法:结构和枚举。与结构相比,枚举构造一个具有多个变种、变体而不是多个字段的类型。 虽然结构是几乎所有编程语言的一部分,但枚举并不是那么主流,并且主要出现在 Haskell 或 OCaml 等静态类型 icon
  • Java中的数据传输对象(DTO)是在子系统之间传输数据的对象。它是一种用于聚合数据的企业设计模式。主要目的是减少子系统之间所需的系统调用次数,从而减少所产生的开销。 普通旧Java对象(Plain Old Java Object,POJO)是一个 icon
  • 在本文中,我们关注记录名称字段。这些字段旨在包含一个用户可识别的值,通过该值可以了解、寻址或引用一个人或事物。与业务标识符字段不同,名称字段的值可能会随着时间而改变。此外,对于可以存在有效重复值的事物(例如人、城市),存在“真实世界”名称。 icon
  • 有一个代码可读性陷阱,一旦你意识到它就很容易避免,但这个陷阱无处不在:人们喜欢省略“单位unit”。看看 Python、Java 和 Haskell 中的以下三个片段: icon
  • Rust 中的 Deref 强制转换是一个强大而方便的功能,它允许您更互换地处理智能指针和拥有的值。 它本质上是让编译器自动将对实现 Deref trait的类型的引用转换为对其基础数据的引用。 Deref是 R icon
  • Java中引入的Record类型可以通过压缩同源代码来帮助我们提高可读性和表现力的几个场景。 1、在控制器中使用Record通常,Spring Boot控制器使用简单的POJO 类进行操作,这些类通过网络将数据传回 icon
  • 领域驱动设计 (DDD) 是一种将软件建模为与业务领域紧密结合的方法。 战略设计:涉及定义限定上下文,例如将电子商务商店拆分为订单、库存和客户管理等领域),在更高层次上运作 战术设计:使用技术资源构建领域模型时可以应用战术设计模式,从而帮助丰富领域模型。 icon
  • 当谈到 Go中结构体值时,人们纠结:通过指针传递这些值还是只是复制值? 由于指针会带来一些开销,因此人们自然的反应是不惜一切代价避免使用它们,并尽可能传递结构值复制副本。 而我通常选择使用指针结构的两个原因是标识性和一致性。 icon
  • Spring Validator接口提供了一种灵活且可自定义的方法来验证对象。在本文中,我们学习如何使用Validator接口在基于 Spring 的应用程序中验证对象。我们探索了Validator接口的两种方法supports()和verify(),以及如何实现自定义验证器来验证对象。 < icon
  • Java 的 final 关键字存在初始化和并发可见性陷阱,JEP 500 将强化其不可变语义,开发者需确保安全发布以适配未来 JVM 优化。 最终,Final 不再只是“看起来不能改”——Java 的不可变边界正在被彻底重定义!< icon
  • Yavi是一个 Java 验证库,它允许我们轻松、干净地确保我们的对象处于有效状态。 Yavi 是 Java 应用程序中对象验证的绝佳轻量级选择。它不依赖于反射或向被验证的对象添加额外的注释,因此它可以完全独立于我们希望验证的类使用。它还强调类型安全的 A icon
  • Java现在要限制通过特殊手段(深度反射)修改final字段的做法。目前会先发警告,以后会直接禁止。这样能让Java程序更安全、运行更快。如果确实需要修改final字段,开发者可以通过特殊设置来开启这个功能。 主要目的为将来Java icon