1. 重构 - Deal with Generalization

    这一章是关于重构概括关系的总结。概括关系,简而言之就是一种代码复用体系,也就是面向对象的类系统的重构。常见的概括关系重构包括字段和函数的上移和下移、构造函数的上移、使用工厂方法代替构复杂造器。除了处理一个现有的类型系统,还可以对类型系统进行更改,比如将父类拆分为父类和子类,将相关但是不同的类移动到父类后直接删除、合并抽象逻辑为父类、从函数中提取公共模板方法、定义两个类的角色 —— 接口。此外,本文还探讨了概括关系的两种选择:委托和继承,前者适用于 has 关系,后者适用于 is 关系。

    2019/05/08 Refactoring Scala Martin Fowler

  2. 重构 - Simplifie Function Call

    本章是重构的第五章,主要讲解了函数调用的优化。注意,这和 Extract Method 很像,但是它们侧重于两个不同的方面,Extract 着重于对函数实现,也就是函数体的重构,而这里的 Function Call 则更侧重于对于调用函数的优化,包括对于函数名称、参数长度、责任和角色的处理。

    2019/05/07 Refactoring Scala Martin Fowler

  3. 重构 - Reorganize Data and Control Structure

    这是重构的第四篇文章,主要讲解对于数据结构的重建问题。着重介绍了子封装方法代替字段、数据对象替代数据值、数据对象值和数据对象引用的转换、数组数据的拆分、数组数据对象的封装,也介绍了对于单向和双向数据绑定的处理、字段取代子类(组合而非继承)等惯用的数据组织习惯。在第二部分,讲解了对于控制结构的重构,包括表达式清晰化、控制结构优化、卫语句,最后介绍了空对象和多态对于减少控制结构样板代码的作用。

    2019/05/06 Refactoring Scala Martin Fowler

  4. 重构 - Redistribution Responsibility

    本文介绍了重构的第二大法宝:重新为类分配责任,简而言之,其包括:字段和函数的迁移、类的拆分和合并、委托隐藏和中间人移除、对于不可写类的功能扩展。在上一节着重介绍的函数拆分,包括各种临时变量的处理,对包括脚本和一般、严肃类型语言均适用。而本文介绍的方法,更多侧重 OOP 语言,最好是统一对象访问的语言,比如 Strongtalk(一种 Smalltalk 的方言)、Scala(一种 Java 的方言)、Dart(一种试图替代 TypeScript 的可选类型语言)。

    2019/05/05 Refactoring Scala Martin Fowler

  5. 自动语音报告记录:使用阿里云一句话识别 API 构建

    本文介绍了使用阿里云的一句话识别 API,使用 Java Sound API 和 JavaFx 进行的语音报告识别自动记录:自动的在被试语音报告数字的时候记录其回答的结果。实现使用了多线程技术,因为在录制声音、使用 Netty 发送语音到阿里云服务器、语音结果同义词转换和解析、语音结果展示方面都存在各种并发问题,经过优化,本实现的语音识别率(85% 可用)可满足需要。

    2019/05/03 Aliyun Scala 自动化 语音识别 阿里云

  6. 重构 - Unit Test and Extract Method

    本文介绍了重构的基础:单元测试,单元测试有助于确定重构前的软件行为,用以和重构之后进行对比验证,重构应该不引起任何的测试程序失败发生。本文也讲解了重构的重头戏:函数拆分,拆分有很多方案,包括各种临时变量的处理方法,要根据情景合理选择合适的方案。

    2019/05/03 Refactoring Scala Martin Fowler

  7. 重构 - Why Refactoring

    这系列博客是我阅读《重构:改善既有代码的设计》一书的笔记。在原书中使用的是 Java 作为示例,而我使用的则是 Scala,本系列博客可为 Scala 重构提供类似的经验。

    2019/04/27 Refactoring Scala Martin Fowler

  8. Java Sound 简明教程以及节律纯音实现

    这是一份翻译自 developer.com 的关于 Java Sound 的简明教程,以及我利用 Java Sound 实现的多种节律纯音实现方案。本教程主要介绍了声音的物理和编程含义,此外讲解了 Java Sound Sampled 包的基本用法:包括录音到流、文件、从流、文件中播放、事件等。本文并未涉及 Control API 和 MIDI 包。

    2019/04/27 Java Scala Java Sound