C++中不存储成员函数返回值是否属于不良编程实践?
要不要忽略函数返回值?得看这两点
这个问题得拆开来看,核心是搞清楚你写的函数,它的返回值到底是「可选附加信息」还是「核心输出/关键状态」——不同情况,结论完全不一样。
1. 如果返回值是「可选附加信息」——忽略完全没问题
就拿你举的AppendVector例子来说:这个函数的核心职责是往vector里追加元素,返回索引只是给那些需要用到这个元素位置的调用者准备的附加信息。
比如你只是想批量初始化填充数据,根本不需要知道新元素存在哪:
int main() { // 批量填充初始数据,不需要用到索引,直接调用完全合理 AppendVector(3); AppendVector(4); AppendVector(5); // 后续只需要遍历vector,不需要单个元素的索引 for (int num : myVector) { // do something } }
这种场景下忽略返回值不仅不是不良实践,反而是很自然的写法——总不能为了“不浪费返回值”硬写个变量存起来,最后根本不用吧?那才是多余的冗余代码。
2. 如果返回值是「核心输出」或「关键状态」——忽略就是不良实践
反过来,如果这个函数的返回值是你调用它的主要目的,或者是用来表示操作是否成功的关键标志,那忽略它就会埋下隐患:
- 比如如果
AppendVector的返回值不是索引,而是表示“是否成功添加元素”的状态码(比如0成功,-1代表内存不足),那你忽略返回值就不知道操作有没有失败,后续使用vector时可能会遇到未预期的空数据或错误。 - 再比如如果某个函数的核心功能就是计算并返回一个值(比如
int CalculateSum(int a, int b)),你调用它却不存储返回值,那这完全是无意义的调用——相当于白跑了一遍计算逻辑,没有任何实际产出。
额外小建议:优化函数设计
如果你的函数经常被调用却没人用返回值,其实可以考虑做个重载版本,让调用者按需选择:
// 给需要索引的调用者用 int AppendVector(int value) { myVector.push_back(value); return myVector.size() - 1; } // 给不需要索引的调用者用,直接返回void void AppendVector(int value) { myVector.push_back(value); }
这样代码可读性更高,也不会再有人纠结“要不要存返回值”的问题。
内容的提问来源于stack exchange,提问作者Edd Lilley
相关产品推荐
相关产品推荐

