理论六-如何通过封装、抽象、模块化、中间层等解耦代码

来源: 王争「设计模式」专栏

前面我们讲到,重构可以分为大规模高层重构(简称“大型重构”)和小规模低层次重构(简称“小型重构”)。大型重构是对系统、模块、代码结构、类之间关系等顶层代码设计进行的重构。对于大型重构来说,今天我们重点讲解最有效的一个手段,那就是“解耦”。解耦的目的是实现代码高内聚、松耦合。关于解耦,我准备分下面三个部分来给你讲解。

阅读全文

理论五-什么是代码的可测试性?如何写出可测试性好的代码

来源: 王争「设计模式」专栏

在上一节课中,我们对单元测试做了介绍,讲了“什么是单元测试?为什么要编写单元测试?如何编写单元测试?实践中单元测试为什么难贯彻执行?”这样几个问题。

实际上,写单元测试并不难,也不需要太多技巧,相反,写出可测试的代码反倒是件非常有挑战的事情。所以,今天,我们就再来聊一聊代码的可测试性,主要包括这样几个问题:

阅读全文

这些知识决定了程序员的上限

来源: 后端技术杂谈

讲述决定程序员上限的一些知识技能点,包括如何学习、如何阅读源码、计算机科学基础知识体系等。来自内部分享PPT,后续会发布详细版。

阅读全文

事务隔离:为什么你改了我还看不见?

来源: MySQL实战45讲 - 林晓斌

提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱。

转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这 100 块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了么?这时就要用到“事务”这个概念了。

阅读全文

基础架构:一条SQL查询语句是如何执行的?

来源: MySQL实战45讲 - 林晓斌

这是专栏的第一篇文章,我想来跟你聊聊 MySQL 的基础架构。我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时:

阅读全文

时间管理:如何利用好自己的时间

来源: 左耳听风 专栏

今天,我们接着再来聊另外一个话题——如何利用好自己的时间。对此,我有下面的这些心得和方法,如果你有更好的方法,也欢迎告诉我。

投资自己的时间

其实,时间就像金钱一样,你得学会投资时间,把时间投资在有价值有意义的地方,你就会有“更多的时间”。

阅读全文

答疑解惑:渴望、热情和选择

来源: 左耳听风 专栏

自从专栏上线以来,我陆陆续续从专栏留言、微信、微博、公开演讲等多种途径收到了一些用户的提问。在这篇答疑文章中,我特意挑选了其中最有代表性的三个问题来回答,希望能对你有帮助。

  • 加班太严重完全没有时间学习,怎么办?

阅读全文

如何超过大多数人

来源: 酷壳 - 陈皓

当你看到这篇文章的标题,你一定对这篇文章产生了巨大的兴趣,因为你的潜意识在告诉你,这是一本人生的“武林秘籍”,而且还是左耳朵写的,一定有干货满满,只要读完,一定可以练就神功并找到超过大多数人的快车道和捷径……然而…… 当你看到我这样开篇时,你一定会觉得我马上就要有个转折,告诉你这是不可能的,一切都需要付出和努力……然而,你错了,这篇文章还真就是一篇“秘籍”,只要你把这些“秘籍”用起来,你就一定可以超过大多数人。而且,这篇文章只有我这个“人生导师”可以写得好。毕竟,我的生命过到了十六进制2B的年纪,踏入这个社会已超过20年,舍我其谁呢?!

阅读全文

理论四:重复的代码就一定违背DRY吗?如何提高代码的复用性?

来源: 王争「设计模式」专栏

今天,我们再学习一个你肯定听过的原则,那就是 DRY 原则。它的英文描述为:Don’t Repeat Yourself。中文直译为:不要重复自己。将它应用在编程中,可以理解为:不要写重复的代码。

阅读全文

Examples of GoF Design Patterns in Java's core libraries

来源: stack overflow

阅读全文