horance

38
获赞数
0
关注数
29
粉丝数
西安
山东大学 | 计算机软件与理论
IP 属地未知
2016-03-07 加入
浏览 8.6k

刘光聪,程序员,敏捷教练,开源软件爱好者,具有多年大型遗留系统的重构经验,对OO,FP,DSL等领域具有浓厚的兴趣。

255 声望|学徒
java
135
函数式编程
134
设计模式
124
scala
75
正交设计
71
1 黄金勋章
白银勋章
暂未获得该勋章
如何获得
1 青铜勋章
个人动态
  • 发布了文章2016-04-04
    Java8 Lambda本质论
    Lambda的本质 需求1. 按照产品的重量进行升序排序 此处使用「匿名内部类」的设计,但掺杂了较多的语法噪声,引入了不必要的复杂度。 {代码...} 使用Lambda表达式,可以进一步消除语法噪声,简化设计。 {代码...} 也就是说,Lambda其本质是「匿名内部类」的一种「语法...
  • 发布了文章2016-04-03
    重构:最委屈的工程实践
    重构误区 重构变成了业界最委屈的工程实践之一,管理层不支持,而程序员吃力不讨好。归根结底,是对「重构」错误地理解,给管理层带来很多负反馈。 将事情做好,还得正确地做事。重构是一个系统工程,不仅仅要求雄厚的软件设计素养,同时需要正确的做事方法。 大谬不...
  • 发布了文章2016-04-03
    Scala Essentials: 剖析 List
    DRY List Nil对象定义在scala.collection.immutable.List中。 {代码...} Nil可以通过::方法追加新的元素,并返回新的List。 {代码...} List可以通过:::连接两个List,并返回新的List。 {代码...}
  • 发布了文章2016-04-03
    Scala Essentials: 隐式转换
    java.lang.String并存在exists方法,为此标准库中在Predef定义了一个隐式转换,使String隐式地转换为StringOps,从而提供更多地操作字符串的方法。
  • 发布了文章2016-04-03
    Scala Essentials: 类型约束
    Scala提供了另一种类型界定的手段,与类型界定操作符<:, <%具有微妙的关系。 T <=< U:T是否与U类型相等 T <:< U:T是否是U的子类型 T <%< U:T是否可以隐式地转换为U类型 类型界定常常用于以下两种场景: 在泛型类中,定义在特定条件下的才...
  • 发布了文章2016-04-03
    Scala Essentials: 剖析 var/val
    var {代码...} {代码...} var自动生成了「读写」的接口; var表示可变对象,代表了一种「命令式」的思维; val {代码...} {代码...} val只生成了「只读」的接口; val表示不可变对象,代表了一种「函数式」的思维; val蕴含了final的语义; private {代码...} {代码....
  • 发布了文章2016-04-03
    Scala Essentials: 字符串内插
    Scala是一门高度可扩展性的程序设计语言,保持微小的内核,但具有无穷大的扩展能力。例如,「字符串内插」功能,Scala语言并不是原生地支持该特性,而是通过类库的扩展来实现的。
  • 发布了文章2016-04-03
    Scala Essentials: 字面值
    类型系统 引用类型 AnyRef的子类 使用new构造对象 当存在默认构造函数,可以略去括号 AnyRef等价于java.lang.Object 可以将null赋值给Reference Type 值类型 AnyVal的子类 Char, Byte, Short, Int, Long, Float, Double, Unit, Boolean 不能使用new构造实例,而使用L...
  • 发布了文章2016-03-15
    持续学习
    我出生时,父亲为我取名「刘光云」,承“光”辈,单字“云”。但自上学之后,便「不知所云」。有一天语文老师说文解字道:“聪者,耳到,眼到,口到,心到也”。判若相识恨晚的感觉,我对“聪”字「情有独钟」,随将自己的名字改为「刘光聪」。
  • 发布了文章2016-03-10
    Refactoring to Functions
    OO makes code understandable by encapsulating moving parting, but FP makes code understandable by minimizing moving parts. -Michael Feathers
  • 发布了文章2016-03-10
    The Coding Kata: FizzBuzzWhizz in Modern C++11
    至今,C++社区仍具有强大的生命力,尤其自C++11出现后获得了新生。C++到底存在什么样的魅力,让人如此痴狂呢?本文试图阐述C++的设计思维,并揭示C++内在的设计本质;最后通过FizzBuzzWhizz的设计和实现一展C++11的风采。
  • 发布了文章2016-03-10
    The Coding Kata: FizzBuzzWhizz in Ruby
    Functional programming leads to deep insights into the nature of computation. -- Martin Odersky
  • 发布了文章2016-03-10
    The Coding Kata: FizzBuzzWhizz in Java8
    Functional programming leads to deep insights into the nature of computation. -- Martin Odersky
  • 发布了文章2016-03-10
    The Coding Kata: FizzBuzzWhizz in Scala
    Functional programming leads to deep insights into the nature of computation. -- Martin Odersky
  • 发布了文章2016-03-10
    你无法忍受Google Test的9个特性
    这种严格的规则,虽然给Google Test的实现带来了诸多便捷之处,但这给用户造成了很大的负担。尤其当一个用例需要描述一个数学逻辑规则时,用例的表达力将大大折扣。
  • 发布了文章2016-03-10
    Magellan: A Simple xUnit Test Framework in Modern C++11
    Magellan是一个简单的、可扩展的、使用C\+\+11实现的xUnit测试框架。Magellan设计灵感来自于Java社区著名的测试框架JUnit。
  • 发布了文章2016-03-10
    浅谈C++物理设计:实用宏
    Config.h提供了编译器支持C++11特性的配置信息。ABSTRACT, OVERRIDE, EXTENDS, IMPLEMENTS等关键字,使得Java程序员也能看懂C++的代码,也极大地改善了C++的表现力。
  • 发布了文章2016-03-10
    浅谈C++物理设计:最佳实践
    如何保证自满足 为了验证头文件设计的自满足原则,实现文件的第一条语句必然是包含其对应的头文件。 反例: {代码...} 正例: {代码...} override和private 所有override的函数(除override的virtual析构函数之外)都应该是private的,以保证按接口编程的良好设计原则...
  • 发布了文章2016-03-10
    浅谈C++物理设计:设计原则
    所有头文件都应该自满足的。看一个具体的示例代码,这里定义了一个TestCase.h头文件。TestCase对父类TestLeaf, TestFixture都存在编译时依赖,但没有包含基类的头文件。
  • 发布了文章2016-03-10
    浅谈C++物理设计:代码规范
    第一种命名规则问题在于:当文件名重命名或移动目录时,需要同步修改头文件保护宏;推荐使用IDE随机自动地生成头文件保护宏,其更加快捷、简单、安全、有效。