• 大多数人以为他们需要学习特定技术、算法、数学或其他形式的具体知识。 但是在Joost看来,这些从来都不是最主要的。 最主要的是他们需要学习“ 自律 ”。这是来自
  • 抽象方法一般有两个分解decomposition和组合composition,这两种方法的方向正好相反,分解是将整体分解为部分,而组合是将部分组合成整体。 在软件架构设计和编码中,我们经常快速灵活使用这两种方法,比如将一个类分解为多个小类,将一个方法分解为 icon
  • 之前我在分解和组合的抽象方法一文中谈了分解decomposition和组合composition具体特点,范畴理论大师Bartosz icon
  • 一直以来,学计算机的总是要先学数学与算法,计算机科学家好像比数学家低人一等。现在计算机科学家Lamport认为传统xy数学公式有漏洞,采取对象结构证明方法更好,你是不是扬眉吐气了呢? 赢得2013计算机图灵奖的Leslie Lamport发表了一篇 icon
  • 因为函数的父节点是CLR运行时或者JVM运行时,函数的标识是它们的父节点定义的。面向对象中的方法是绑定在类型系统上的函数。类型系统是什么?类型系统就是有组织有纪律有偏移地一层一层的进行分类,组织结构是棵树,每一节点都不交叉,任何两节点的通信必定经过了它们共同的父节点。方法被绑定在了类型系统上 icon
  • 2015-03-15 16:05 "@jdon007"的内容两种比较常用的思考方法(或解决方法),用哪一种,还是取决于问题域 ... 讲得很 icon
  • 一位有着10年面向对象语言的程序员对面向对象两大支柱继承和封装提出了自己的疑问,并由此认为可以向面向对象说再见了。 原文: icon
  • 使用Monad可以解决下面两个问题: 1. 假设每个函数会按次序共享一个全局状态,那么我们使用StateMonad。多个函数共享一个全局状态在面向对象范式中是使用对象Object完成,状态作为对象的字段,而函数作为对象的方法,如下: icon
  • 含义共生性(Connascence of meaning)是一种用于描述组件之间关系和依赖程度的专业词语,最早见于90年代的Meilir Page-Jones的 What Every Programmer Should Know About Object Oriented Design。该概念常应用 icon
  • 编写干净代码,阻止丑陋的错误与坏味道,十条规则遵循如下: 1.遵循单一职责原则每个类应该而且只有一种思考方向的变化,对类如此,对方法也是如此,那些冗长的无所不包的类或方法摊开在一张纸上的长度快要有中国长城长度的一半 icon
  • 显然面向对象编程方法曾被当作银弹,但是无论如何作为技术架构师货计算机科学专业毕业工作的人来说,掌握OOP这一技能会受到用人单位的相当重视。 我看到很多计算机程序员自豪地宣称:耶,我以面对对象方式设计了代码,将我的数据成员定义为私有,只能通过公有方法访问,我 icon
  • 世界很少有东西是随着时间一直增加的,这些稀有之物包括:恒星之间的距离,在可见宇宙中的熵,和业务需求。许多文章说不要过度工程,但没有说为什么以及怎样做到。这里有10个清晰案例告诉你这些细节。 1.软件工程比业务更加聪明工程师们往往认为自己是最聪明的人 icon
  • 通过上面案例我们发现Scala并不是纯的函数语言,Scala号称是面向对象和函数语言的混合,那么Scala是纯的面向对象吗? icon
  • 对象是把空间和空间的变迁(运动)(计算机里的世界是离散的所以叫变迁),或者叫把变迁和变迁的结果(空间)封装成为一个单元(问题单元),这样的单元在空间维度可以一层套一层的套下去,在时间(运动)维度可以一单元一单元的组合下去。OO的“问题单元”到底是什么?是一种管理模式,用来管理时间和空间的模式。 icon
  • Function和Operation的异同Function是绑定在ResourceType(class)上的,一种资源类型上有一个Function列表。record(object)从ResourceType(class)继承这些Function列表。这种绑定 icon
  • 如果再往下抽象一个层次,Person对象的Gender、Name、Birthday属性、Person对象的Type类型(typeof Person得到的值)等等都变成了维度。一个变化方向是一个维度,而且是正交的维度,仅通过Name值或Birthday值无法知道一个对象是不是人,同样,只知道一个对象的 icon