c - 减少两个相似的函数以避免重复
问题描述
我有一个项目。在那一个中有非常相似的函数,因为差异只是计算方式。一方面我们使用平均计算,另一方面我们使用中位数计算。这些函数使用相同的参数和相同的代码。
这是区别:
find_median(some parameters)
{
/* some code */
best_windows_median(same parameters);
/* some code */
}
和
find_average(some parameters)
{
/* some code */
best_windows_average(some parameters);
/* some code */
}
2-3个函数也是一样的。如何将 2 个函数重新组合为一个,但保留使用中位数或平均值的选择?
解决方案
有几种方法可以实现这一点,包括传递一个值来切换使用哪个计算,以及传递一个函数指针(如果感兴趣的话,第二个是依赖倒置的本质)。
所以要么:
find_average(data parameters, avg_type) {
same code
switch (avg_type) {
case AVG_MEAN:
best_windows_mean(data parameters);
break;
case AVG_MEDIAN:
best_windows_median(data parameters);
break;
case AVG_MODE:
...
default:
report unrecognised option;
}
same code;
}
或者
find_average(data parameters, best_windows_function) {
same code;
best_windows_function(data parameters);
same code;
}
使用哪一个取决于您是否对函数指针感到满意,以及您最喜欢哪一个,真的。
推荐阅读
- python - 如何在Python(Jupyter Notebook)中修复'tensorflow:Saver未创建,因为图中没有要恢复的变量'
- javascript - 我怎样才能删除这个空格?(HTML,CSS)
- python - Pandas-如何在csv文件中逐行保存不同列中不同值的频率(包括0个频率)
- acumatica - 在单个网格字段中显示 [PXDBDate] 的日期和时间
- javascript - 为什么 forEach 返回无效?
- angular - 来自 ts 的反应式表单验证
- elasticsearch - Bodybuilder js:桶过滤器聚合
- favicon - 如何为 mkdocs 网站添加 favicon?
- pypdf2 - PyPDF2 模块和加密的 PDF 文件
- reactjs - React-table,如何缩进列