使用#include消除重复代码
消除重复代码代码很多种,比如:
1)提炼成函数复用
2)使用宏
3)继承
4)使用闭包(boost::bind、boost::function)
上述是最为常用的,对于C++程序,闭包可能用得相对少一点。下列代码使用的是第5种:利用#include消除重复代码:
|
void f1() { try { 。。。 } catch (Aexception& a) { } catch (Bexception& b) { } catch (Cexception& c) { } catch (Xexception& x) { } } void f2() { try { 。。。 } catch (Aexception& a) { } catch (Bexception& b) { } catch (Yexception& y) { } catch (Zexception& z) { } } void f3() { try { 。。。 } catch (Cexception& c) { } catch (Xexception& x) { } catch (Yexception& y) { } catch (Zexception& z) { } } |
消除重复代码之后,如下:
|
void f1() { try { 。。。 } #include "catch.cc" } void f2() { try { 。。。 } #include "catch.cc" } void f3() { try { 。。。 } #include "catch.cc" } |
catch.cc文件的内容为:
|
catch (Aexception& a) { } catch (Bexception& b) { } catch (Cexception& c) { } catch (Xexception& x) { } catch (Yexception& y) { } catch (Zexception& z) { } |
当然,可以用宏达到同样的目的,不过不用宏,也许是更明智的知法。
使用#include消除重复代码的更多相关文章
- 2.C#中通过委托Func消除重复代码
阅读目录 一:重复的代码 二:C#中通过委托Func消除重复代码 一:重复代码 public class Persion { public string Name { get; set; } ...
- 1.C#中通过委托Action消除重复代码
阅读目录 一:重复的代码 二:使用委托消除重复代码 一:重复的代码 我们在写一些方法的时候,会在里面可能出现异常的地方使用try catch语句,这样每个方法都会有try catch语 ...
- Metalama简介2.利用Aspect在编译时进行消除重复代码
上文介绍到Aspect是Metalama的核心概念,它本质上是一个编译时的AOP切片.下面我们就来系统说明一下Metalama中的Aspect. Metalama简介1. 不止是一个.NET跨平台的编 ...
- 【译】利用Lombok消除重复代码
当你在写Getter和Setter时,一定无数次的想过,为什么会有POJO这么烂的东西.你不是一个人!(不是骂人-)无数的开发人员花费了大量的时间来写这种样板代码,而他们本来可以利用这些时间做出更有价 ...
- Android 勤用RXJava compose操作符消除重复代码
相信小伙伴在使用RXJava与Retrofit请求网络时,都有遇到过这样的场景,在IO线程请求网络解析数据,接着返回主线程setData.更新View试图,那么也肯定熟悉下面这几句代码: .subsc ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- 使用函数式编程消除重复无聊的foreach代码(Scala示例)
摘要:使用Scala语言为例,展示函数式编程消除重复无聊的foreach代码. 难度:中级 概述 大多数开发者在开发生涯里,会面对大量业务代码.而这些业务代码中,会发现有大量重复无聊的 foreach ...
- 使用枚举类Enum作为callee和caller的约定,运用反射消除分支和重复代码在命令式程序中的应用
在开发过程中,程序提供的功能由简单变得复杂,承担功能的主要类也会因此变得庞大臃肿,如果不加以维护,就会散发出浓重的代码味道.下面这篇博文,主要讲述了利用Enum,反射等手段简化重构代码的过程. 代码涉 ...
- 【重构】 代码的坏味道总结 Bad Smell (一) (重复代码 | 过长函数 | 过大的类 | 过长参数列 | 发散式变化 | 霰弹式修改)
膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 . 代码的坏味道就意味着需要重构, 对代码的坏味道了然于心是重构的比要前提; . 作者 : 万境绝尘 转载请注明出 ...
随机推荐
- java mybatisGenerator with velocity
mybatisGenerator + velocity 模板生成dao+ mapper,并将mysql命名规范的table name + column -> java命名规范的 Class na ...
- 【UVa】1606 Amphiphilic Carbon Molecules(计算几何)
题目 题目 分析 跟着lrj学的,理解了,然而不是很熟,还是发上来供以后复习 代码 #include <bits/stdc++.h> using namespace std; ; stru ...
- Ajax的基础应用
什么是ajax Ajax: asynchronous javascript and xml (异步js和xml) 其是可以与服务器进行(异步/同步)交互的技术之一. ajax的语言载体是java ...
- 3d标签云(JS版)
http://www.miaov.com/miaov_demo/3dLable/miaov_demo.html http://www.lijian.net/p/windstagball/index.h ...
- Oracle重建临时表空间
[oracle@hd58 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Wed Jun 27 11:58:25 ...
- Centos 6.5 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入(2)
一.Centos 6.5 下的Zabbix Server安装 上篇文章记录的是centos 7 下安装zabbix ,很简单.但是6.5上面没有可用的源直接安装zabbix,所以需要从别处下载.感谢i ...
- 记:cloudstack--gluster主存储上的一个文件损坏导致SSVM启动失败
cloudstack的系统vm(ssvm不停的重建失败).- 1.cloudstack-management 的关键日志 这行 cannot read header 'mnt.......':Inva ...
- Docking非原生配体
转载于 https://mp.weixin.qq.com/s/VDN1qAZGIMol6prwQW4umw Docking非原生配体 在前面的例子中,AutoDock Vina能把配体构象调整到几乎原 ...
- 1.celery概述
1. 问题抛出 我们在做网站后端程序开发时,会碰到这样的需求:用户需要在我们的网站填写注册信息,我们发给用户一封注册激活邮件到用户邮箱,如果由于各种原因,这封邮件发送所需时间较长,那么客户端将会等待很 ...
- Ubuntu TIP
recovery进系统硬盘是挂载为“只读”的,要想改文件需要remount / 并且添加“w”(写权限). 进一次crub,再root进入 折腾几次似乎就可以编辑磁盘上的文件了