• 什么是复杂性?如何识别?是不是无为就不会造成复杂性?有些复杂性是过早设计带入,但是有些复杂性是因为没有及时识别与意识到,造成更大的复杂性!如同自己绕毛线,绕得越多,自己被扰进去了! 识别到复杂性,然后将其标注为核心子域,集中精兵强干重炮攻击,所以,
  • 这篇文章是关于John Ousterhout的新书“软件设计哲学”的评论:事实证明,写一篇有关如何将俄罗斯方块AI实现为容器化的Kotlin微服务的文章要比如何编写好的代码要容易得多。170页的“软件设计哲学”(以下简称PoSD)是一本不起眼的书。John的背景是系统而不是软
  • 人们过于害怕代码重复,过于憧憬可复用可重用的美好,导致对代码重复发起了一场神圣的战争。如今人们提出了不同的意见,在Twitter上引起了一场争论: “我呼吁结束针对代码重复的神圣战争。我们让年轻的开发人员和工程师相信这是有史以来最糟糕的事情,当时间 icon
  • Dry是Don't Repeat Yourself简写,我们经常会听到像“不要重复自己”这样的陈词滥调。我们采取这 icon
  • 在关于DDD的每本书和每次会议中,我都听到“DDD不是银弹”。我可能是唯一一个反思的人。因此我可能会错过一些东西。不过,自从我开始学习DDD以来,我就在每个项目中使用它。即使在CRUD实现足够好的简单情况下也是如此。因为了解我的领域名并能决定CRUD是否能足够好地实现。 icon
  • 感觉现在是微服务炒作周期的高峰期,看到一篇博客文章“如何将我的巨石迁移到150个服务”。现在我经常听到更多的反击:“我不讨厌我的巨石,我只关心事情保持高效”。我们实际上看到了一些从 icon
  • 我最常用的shell命令是"|"。这称为管道。简而言之,"|"允许一个程序(左侧)的输出成为另一个程序的输入(在右侧)。这是一种将两个命令连接在一起的方法。例如,如果我要运行以下内容: echo "hello" icon
  • fish是一个智能且用户友好的命令行shell,适用于macOS,Linux和其他家族。fish包含语法突出显示、根据你键入字符自动提示autosuggest-as-type和花式选项卡完成等功能,无需配置。 banq注:其中autosuggest icon
  • 在我学习计算机科学的过程中,我遇到了所谓的Hoare逻辑。它的主要思想是,对于每个命令/程序,您可以定义前提条件和后置条件。这些是逻辑表达式。在启动程序之前必须满足前提条件。主要是检查所有输入是否在正确的范围内等等。它当然也可以是恒定的,这意味着:这个程序没有特定的前提条件。运行程序后必须满 icon
  • 软件的总体设计美学:1)简单:为了每个人的利益,找到最简单的问题形式。这适用于所有级别。简单意味着专注于一件事。这种关注于一件事的自然结果是紧凑性。您可以通过询问“这个问题的哪些陈述包括我们关心的所有内容并排除我们不关心的所有内容?”来找到问题的简单形式。然后“总结该声明中包含的所有 icon
  • 复制比错误的抽象便宜得多(代价小成本低),宁可重复而不选择错误的抽象。让人们意识到“错误的抽象”这个问题是很难: 程序员A看到重复。 程序员A提取重复并为其命名。这创建了一个新的抽象。它可能是一种新方法,甚至可能是一种新类。 程序员A用新的抽象 icon
  • “ 不要重复自己 DRY”,每个开发者都在他职业生涯的早期就学会了这个口头禅。对这个原则的共同理解是你不应该复制你的代码。就那么简单。不要复制,如果你发现重复就重构。违反此规则的行为将被其他开发人员立即指出为侵犯软件开发最基本的做法之一。 icon
  • 最近,我浏览了公司的代码库,发现它有三个版本的仪表板,都是用于分析页面,我很确定客户不需要那样做。这引发了我幼稚脑中的一些事情,我开始在互联网上寻找相关的想法。就在那时,我发现了这篇古老的论文: icon
  • 本文来自tedinski,类型与函数哪个是设计基础?数据结构和算法是设计基础吗?函数与类型的关系,打个比喻,有点像建筑师想要进行室内设计。并不是说房间的内部并不重要 - 一个糟糕的建筑师绝对可以创造人类无用的房间 - 但那不是重要的部分。家具可以重新布置,承重墙不能。我们可以 icon
  • 决策者一般习惯于设计能够产生可见结果的东西:事物外形,用户界面,功能,体验,但是他们很难理解为什么他们应该关心软件设计。(这是说给甲方 或老板听的) 软件设计也会对用户产生影响。如果软件的模型与业务领域一致,则有助于解决用户的问题,否则产生更多问题 icon
  • 在没有框架情况下能够开发应用吗?如果你很感兴趣,请加入无框架运动。我们不讨厌框架,也不会创建针对框架的活动,但我们认为滥用框架是缺乏技术债务的知识,我们认为框架是有用的替代方案的,即使用专用库,标准库,编程语言和操作系统。 我们认为,在选择 icon
  • 在Michael Feathers的消极架构中,他列举了Haskell(函数式编程)中提到IO Monad作为一个例子,在面向对象编程中也有类似的例子,通过使用分层和依 icon