![](https://img-blog.csdnimg.cn/fcee027baa414aae87e3f97864af7686.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式之美
文章平均质量分 70
极客时间-设计模式之美学习笔记
疯狂java杰尼龟
路漫漫其修远兮,吾将上下而求索
展开
-
程序报错该返回什么?
返回NULL值实例返回空字符串或空集合实例Redis地址格式错误时,希望程序终止抛出方式1、直接吞掉。具体的代码示例如下所示:2、原封不动地 re-throw。具体的代码示例如下所示:3、包装成新的异常 re-throw。具体的代码示例如下所示:如果 func1() 抛出的异常是可以恢复,且 func2() 的调用方并不关心此异常,我们完全可以在 func2() 内将 func1() 抛出的异常吞掉;如果 func1() 抛出的异常对 func2() 的调用方来说,也是可以理解原创 2022-06-28 14:45:54 · 601 阅读 · 0 评论 -
ID生成器代码重构问题(下)
第一轮:提升代码可读性第二轮:提升代码可测试性第三轮:添加单元测试第四轮:添加注释原链接:35 | 实战一(下):手把手带你将ID生成器代码从“能用”重构为“好用”原创 2022-06-27 11:26:34 · 314 阅读 · 0 评论 -
ID生成器代码重构问题(上)
背景: 为每个i请求生成一个ID即ID生成器:本机名的最后一个字段+当前时间戳精确到毫秒+8位随机字符串通用方面1.IdGenerator设计成了实现类,违反基于接口而非实现编程的设计思想,如果我们需要设计两个ID生成器算法就需要将IdGenerator改为接口并为不同的算法实现不同的实现类。2.静态方法generate()测试难度更大。3.没有编写单元测试代码4.代码完全没有注释,不易理解,尤其是随机字符串部分业务方面1.没有涉及共享变量,所以代码线程安全。2.接口只有generate原创 2022-06-24 15:24:51 · 258 阅读 · 0 评论