240 发简信
IP属地:湖北
  • 120
    “装台”式“活着” --小说《装台》读后感

    前一段看完电视剧《装台》,又赶紧去读了一遍小说。从中体会到很多“活着”的意义。意犹未尽,突然有一个想法。趁着春节放假,到作者在剧情中提到的各个地方,实际走一趟。完成一篇读后感...

  • 关于ROLE这些宏定义的实现,得益于C++的dynamic_cast。有机会展开聊一聊,如何借助语言特性更好地完成软件设计

    解读《小类、大对象》

    sweet tip: 本文的一些背景知识来源于袁英杰的《小类,大对象:C++》,建议先阅读《小类,大对象:C++》。 2015年,初次接触小类、大对象的时候,还不知道其背后的...

  • 120
    架构整洁之道--跟开源三方软件划清界限实战案例

    背景: 假设有一个开源/第三方的软件模块ModuleA,我们要基于其上做特性的扩展。我见过的较多的做法是二者的代码实现揉在一起,这样会导致一个问题。当ModuleA做升级或者...

  • 代码整洁之道

    函数 函数参数:最好没有,一个次之,两个再次。三个以上不可取。 原因在于,多个参数不便于函数测试,并且多个参数影响阅读。 返回值尽量从返回值输出,这是符合人类认知习惯的。 例...

  • 120
    架构整洁之道解读

    架构的定义 软件架构,是在交付基本功能的基础上,能够使得系统易于开发、部署、运行和维护,用于支撑软件系统的生命周期。在架构设计中要尽可能长时间地保留尽可能多的可选项。 软件架...

  • linux的并发和竞态管理

    1 并发和竞态产生的原因 并发是操作系统编程中的核心问题之一。我们必须要能解决对共享资源的并发访问。 并发产生资源竞争的情况如下: 中断和进程之间 不同优先级的进程之间 不同...

  • linux驱动模型:bus, device, driver

    1 基本概念 bus,device,driver是经典的linux的驱动抽象模型中的三个元素。我们先从概念角度,讲下他们分别长什么样。当然,理解这些,读者需要具备一些linu...

  • 使用C语言的宏来解决一个问题

    宏因为其各种副作用而备受诟病,就像goto一样,有些产品谈宏色变。但是语言特性本身并无善恶之分,其善恶在于使用者。有时候使用某些语言特性,能够非常好的解决一些编程中的难题。本...

  • 120
    4+1视图解读

    最早的4+1视图由Philippe Kruchten于1995年提出,虽然历经26年的时间,中间使用过程中也被不断丰富,但是今天回头看最初的版本,还是有很多收获。 1 背景 ...

  • 《软件设计的哲学》读书笔记

    深模块/浅模块 作者使用深模块和浅模块的概念来形容模块封装的不同程度。 深模块:即暴露给用户极少的必要接口,其它的实现细节尽量封装在模块内部/接口背后,这样便于用户使用和模块...

  • 分离软件中易变部分和稳定部分

    软件中存在本质复杂度和偶发复杂度,即对应软件中易变部分和稳定部分。对于本质复杂度,指的就是业务逻辑,这部分是无论如何消除不掉的,偶发复杂度指的是实现业务逻辑的一些实现框架、实...

  • 软件设计哲学 这本书中提到类不能太小太多,太多的类属于浅模块。
    要区分下和这里提到的小类的区别,书中指的小类是接口类,而本文指的小类属于内部类(接口由那个大的对象对外提供)。

    解读《小类、大对象》

    sweet tip: 本文的一些背景知识来源于袁英杰的《小类,大对象:C++》,建议先阅读《小类,大对象:C++》。 2015年,初次接触小类、大对象的时候,还不知道其背后的...

  • 作者在《小类、大对象:C++》中提到这种实现方式尤其适用于 性能要求高,内存紧张的嵌入式系统,我个人理解,嵌入式系统之外的场景,小类大大对象也应该是很好用的一种方法。难道作者心中还有更好的方法选项?例如traits技术和其它mixin技术?

    解读《小类、大对象》

    sweet tip: 本文的一些背景知识来源于袁英杰的《小类,大对象:C++》,建议先阅读《小类,大对象:C++》。 2015年,初次接触小类、大对象的时候,还不知道其背后的...

个人介绍
一个追求匠艺的程序员