业务场景:设备和客户端按照通讯协议进行通信,设备会有大量的消息送到到客户端,然后客户端收到消息并进行解析,根据不同的消息类型进行区分处理。 如果不考虑设计模式,不考虑易扩展性和易维护性,通常我们的代码会是如下情况: 如果协议中的设备消息有100种,那我们自然就当前switch里面 ...
前言 随着项目的迭代,代码中存在的分支判断可能会越来越多,当里面涉及到的逻辑比较复杂或者分支数量实在是多的难以维护的时候,我们就要考虑下,有办法能让这些代码变得更优雅吗 正文 使用枚举 这里我们简单的定义一个表示状态的枚举。 那么我们在使用的时候就可以直接通过枚举调用了。 优雅的解决了下面代码赋值的方式 善用 Optional 在项目中,总少不了一些非空的判断,可能大部分人还是如下的用法 这时候 ...
2019-04-30 10:02 2 3127 推荐指数:
业务场景:设备和客户端按照通讯协议进行通信,设备会有大量的消息送到到客户端,然后客户端收到消息并进行解析,根据不同的消息类型进行区分处理。 如果不考虑设计模式,不考虑易扩展性和易维护性,通常我们的代码会是如下情况: 如果协议中的设备消息有100种,那我们自然就当前switch里面 ...
关于两者的优缺点如下: 1.if else的优缺点 缺点:效率低(相对于switch) 优点:使用灵活,代码空间小 2.switch的优缺点 缺点:不够灵活,switch仅支持 int,char,unsigned char 等基本类型;代码空间大。 优点:代码结构 ...
我这里的业务场景是根据消息类型将离线消息存入mongoDB不同的collection中。其中就涉及到大量的分支判断,为了增强代码的可读性和可维护性,对之前的代码进行了重构。 先对比一下使用反射+策略模式前后的代码: 重构前: 重构后: 我们可以看到重构前的代码充斥着大量的分支 ...
转自:https://my.oschina.net/stefanzhlg/blog/372413 我们在平时的编码中,我们经常会遇到这样的情况: 使用过多的switch/case 或者 if else 语句,非常不爽,也违背了面向对象的原则: 或相应的switch case代码 ...
在很多时候,我们代码中会有很多分支,而且分支下面的代码又有一些复杂的逻辑,相信很多人都喜欢用 if-else/switch-case 去实现。做的不好的会直接把实现的代码放在 if-else/switch-case 的分支之下: switch ( type ) { case ...
int main(void) { int id; scanf_s("%d",&id); switch(id) { case 2: printf("John\n"); break; case 13: printf("Mary\n ...
switch case虽然是代替if else而出现的,并不好维护,有时候使用switch还不如使用if else。 但没有别的东西能代替switch case了吗?答案当然是否定的,现在就有两种方式。 先看一下使用switch的例子: 设定一个函数,传进来num为1,2,3,4分别返回 ...
在进行编程的时候,if-else和switch-case都可用于条件判断,这篇文章写一写两者的区别。 这里从汇编角度和大家一起分析一下。在网站:https://godbolt.org/上可以查看汇编代码。 1、switch-case 下面这张图是switch-case,左半部分是C代码 ...