• 请遵循以下十二种最佳实践,以保护您的应用程序免受丑陋的空指针异常的侵扰,并使您的代码更具可读性和简洁性。每个认真的Java开发人员或架构师都曾经听说过或经历过NullPointerException异常的滋扰。Java工程师一直致力于解决该null问题很长时间,在Java 8中,添加 icon
  • 软件架构类似房子,这个房子代表一个递归式应用,由顺序、选择和迭代等组成,这个应用被放设计进入一个面向对象的结构中,类似房子设计成三室一厅两厨卫这样的结构,而穿越结构的说水管电线管,这些管线是由函数式编程控制的不变性数据组成。banq注:以DDD为例,聚合结构是一种面向对象设计方式,而 icon
  • 功能feature代表了软件设计的基本复杂性。这是无法避免的复杂性。其他所有内容(语言,工具,模式等)都是意外复杂性的一种形式。因此,要编写最简单的代码(无论我们在堆栈的哪一侧),都应该采用功能驱动feature-driven的方法。它影响我们构造项目,编写测试,封装模块和设计功能的方式。< icon
  • 正如一些口头语言逐渐淡出历史一样,编程语言也面临过时和灭绝的风险。尽管它们对开发技术和编码风格的深远影响肯定仍在引起共鸣,但像ALGOL和LISP这样的语言今天却失去了像以前那样享有那么多的知名度和好评。很自然,我们今天使用的某些语言会遵循相同的路径。绝不意味着这些语言将完全消失。将 icon
  • 根据维基百科:函数式编程是一种编程范例-一种构建计算机程序的结构和元素的样式-会将计算视为对数学函数的评估,并避免更改状态和可变数据。因此,在函数式编程中,有两个非常重要的规则 无数据突变:这意味着在创建数据对象后不应更改它。 无隐式状态:应避免隐藏/隐式状态 icon
  • 早在2015年,在了解React和Redux之后不久,我就爱上了它们背后的函数式编程范例,通过遵循不变性和纯度的一些原则,与诸如Ember或Angular的现代替代品相比,React前端通常编写得更好,更稳定且更易于调试。看了一些函数式编程对JavaScript的作用后,我开始研究当 icon
  • 本章试图说明据我所知,面向数据编程的核心原理是什么。这在很大程度上取决于我在Clojure的编程经验,但是我认为这些原则与语言无关。可以使用Java或C#等面向对象(OO)语言来遵守它们,而可以使用Ocaml,Haskell,JavaScript(甚至使用Clojure)之类的功能编 icon
  • 为了使用来自外部服务的数据,我们通常将JSON有效负载转换为数据传输对象(DTO)。快速处理DTO的代码变得很复杂,但是一些技巧可以有所帮助。我们可以编写易于交互的DTO,使客户端代码更易于编写和阅读的DTO。这些技巧一起使用,有助于使其保持简单。让我们从使用JSON的典型方法开始: icon
  • 本文来自Dark Lang的创始人兼首席执行官Paul Biggar icon
  • 早在2000年代初期,许多开发人员就被Java过于复杂的世界所吓坏。四种模式和中间件/ J2EE / Java EE的组合导致所谓的脱钩的荒谬程度,从我在2002年研究的开源J2EE电子商务系统的此序列图中可以明显看出: icon
  • 函数名称应描述函数所做的所有事情。换句话说,功能不应隐藏副作用。这符合“最小惊喜原则”。但是,有时候这并不容易。下面函数名词名副其实吗? icon
  • 借助reduce函数,它可以做魔术:能在事件溯源EventSourcing中聚合流(事件流)构建当前的聚合状态。首先定义事件类型和聚合数据。我使用电影票预订作为示例用例: icon
  • 什么是teeing()方法?返回一个由两个下游collectors组成的Collector。传递到结果collectors中的每个元素都是由两个下游collectors处理的,然后使用指定的合并merge功能将它们的结果合并到最终结果中。产生的Collector函数执行以下操 icon
  • 原F# core team成员刘涛开通了中文的Bilibili网站(https://space.bilibili.com/1776257394) !结合中国程序员的背景用 icon
  • 如果我们有一个List >,每个流都具有排序元素,那么如何生成一个排序后的Stream ,一次从每个流中获取一个?javaspecialists的文章将展示如何使用Stream API并编写我们自己的MergingSortedSpliterator。 < icon