首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对于通常会返回void的函数,返回字符串是否被认为是不好的做法?

对于通常会返回void的函数,返回字符串被认为是不好的做法。通常情况下,函数的返回值应该与其功能和目的相匹配。如果函数的目的是执行某些操作而不需要返回结果,那么返回void是合理的。但如果函数的目的是返回一个字符串,那么返回void将无法满足需求。

返回字符串的好处是可以将函数的结果传递给调用者,使其能够进一步处理或显示。这在很多情况下是非常有用的,比如在前端开发中,可以将函数返回的字符串用于动态生成网页内容。另外,在后端开发中,返回字符串可以作为API的响应,方便客户端获取数据。

然而,返回字符串也存在一些问题。首先,返回字符串会增加函数的复杂性,因为需要在函数内部创建和管理字符串变量。其次,返回字符串可能会导致内存泄漏或资源浪费,因为调用者可能忘记释放返回的字符串。此外,返回字符串还可能导致函数的可测试性降低,因为需要验证返回的字符串是否符合预期。

因此,对于通常会返回void的函数,如果需要返回字符串,更好的做法是将函数的返回类型设置为字符串,并在函数内部创建和返回相应的字符串。这样可以提高代码的可读性和可维护性,并减少潜在的错误和资源泄漏问题。

腾讯云相关产品和产品介绍链接地址:

  • 云函数(Serverless):https://cloud.tencent.com/product/scf
  • 云开发(CloudBase):https://cloud.tencent.com/product/tcb
  • 云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能(AI):https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

「音视频直播技术」JNI编程常见问题

其实,可以不需要显式注册JNI方法,也不需要提供JNI_OnLoad函数。您可以使用以特定方式命名Native方法。但这种方式很不好,因为如果方法签名是错,直到第一次它被使用时你才知道它出错了。...请注意,UTF-16字符串不是以零终止,\u0000认为是正常数据,所以你需要自己保存字符串长度以及jchar指针。 不要忘记释放你获得字符串。...字符串函数返回jchar *或jbyte *,它们是C样式指向原始数据指针,而不是本地引用。它们保证有效,直到调用Release,这意味着当native方法返回时它们不会自动释放。...Release函数mode参数有三种值。运行时行为依赖于返回是实际数据指针还是其副本: 0 实际:数组对象是非固定。 复制:数据被复制回来。具有副本缓冲区释放。...扩展检查 JNI几乎没有错误检查,错误通常会导致崩溃。Android提供了一种称为CheckJNI模式,在调用标准实现之前,将JavaVM和JNIEnv函数表指针切换到执行扩展系列检查函数表。

1.6K20

Android 混合开发之JsBridge

,这个js文件有的产品做法是让前端自己加载,有的做法是客户端注入,也就是通过loadUrl("javascript:...")注入。...线程必须要等待UI线程中onJsPrompt返回才会唤醒,可以认为是个同步阻塞调用(应该是通过线程等待来做)。...函数一定会阻塞等待10s才返回,这个设计就要求我们不能在onJsPrompt中做耗时操作,systrace中可以验证。...prompt一个坑导致js挂掉 从表现上来看,onJsPrompt必须执行完毕,prompt函数才会返回,否则js线程会一直阻塞在这里。...实际使用中确实会发生这种情况,尤其是APP中有很多线程场景下,怀疑是这么一种场景: 第一步:js线程在执行prompt时挂起, 第二部 :UI线程调度,恰好销毁了Webview,调用了 (webview

2.1K20

Chapter 5: Rvalue References, Move Semantics, PF

也就是说,在拷贝返回函数中,w要么RVO优化,要么实际上被执行为return std::move(w);。...return w; ---> return std::move(w); //编译器认为是一个右值 } 4....对于用户自定义类型而言,他们是继承自自身,也就是说std::is_base_of会返回为true,但是当T是内建类型时,就会返回为false。...对于长度较短字符串,它们会被存储在std::string对象自身空间中,而不是新开辟一块堆内存来存放内容,在这种情况下,移动和拷贝代价将会是一样。...在例子中,正确做法应该是 auto il = {1,2,3}; fwd(il); 因为,花括号初始化对于auto变量类型推导是可以推导成std::initializer_list对象,而有了具体类型之后

5.1K40

Vue 选手转 React 常犯 10 个错误,你犯过几个?

当我们输入一个项目并提交表单时,该项目没有添加到购物清单中。 问题就在于我们违反了也许是 React 中最核心原则 —— 不可变状态。React依靠一个状态变量地址来判断状态是否发生了变化。...还有就是样式,在 HTML 中,style 写成一个字符串: Hello World </button...如果你从 useEffect 钩子函数返回任何东西,它必须是一个清理函数,此函数将在组件卸载时运行。相当于类组件中 componentWillUnmount 生命周期方法。...异步函数也总是返回一个 Promise;如果函数还没有返回,则返回值会自动包装在 Promise 中。...按照上面那种写法,箭头函数直接指向就是返回值,就相当于是返回了一个promise函数了,就不再是一个清理函数了。

20010

现代C++之容器

1.string string 是模板 basic_string 对于 char 类型特化,可以认为是一个只存放字符 char 类型数据容器。...,如果这个参数省略,那么就调用不带第二个参数resize函数。...4.queue与stack (1)为什么 stack(或 queue) pop 函数返回类型为 void,而不是直接返回容器 top(或 front)成员?...跳出 C++ 语境,map(映射)更常见名字是关联数组和字典 ,而在 JSON 里直接被称为对象(object)。在 C++ 外这些容器常常是无序;在 C++ 里关联容器则认为是有序。...但这取决于我们是否使用了一个好哈希函数:在哈希函数选择不当情况下,无序关联容器插入、删除、查找性能可能成为最差情况 O(n),那就比关联容器糟糕得多了。

1K10

干货 | 如何写一个更好Python函数

这个函数命名第一个问题是它使用了缩写。 对于那些并不出名缩略词来说,使用完整英语单词会更好。...对于大多数命名比较好函数来说,很明显有一些东西会从函数返回,它名字将反映这一点。 from_df也不是必要。如果没有明确参数名称,函数文档字符串或类型注释会描述参数类型。...如果你不能写一个清晰文档字符串来描述函数做什么,就说明你需要再考虑考虑为什么要写这个函数了。 返回函数可以认为是一些独立程序。它们以参数形式接受一些输入,并返回一些结果。...首先,尽最大努力避免这种做法。用好了令人惊讶,用不好非常危险。 其次,即使这样做不可行,复制某个参数成本太高,你也可以回到上一条建议。 “我需要返回多个值。单独返回一个值是没有意义。”...例如,如果上面add_three(number)幂等版本在返回结果之前打印了结果,那么它仍然认为是幂等,因为当它访问I / O流时,这个访问与从函数返回值无关。

59620

JavaScript(四)

注意: 在很多语言中,字符串以对象形式来表示,因此认为是引用类型。ECMAScript 放弃了这一传统。 动态属性 对不同类型值可以执行操作则大相径庭。...对于引用类型值,我们可以为其添加属性和方法,也可以改变和删除其属性和方法。...然后,我们为该对象添加了一个名为 name 属性,并将字符串值 “Nicholas” 赋给了这个属性。紧接着,又通过 alert() 函数访问了这个新属性。...在 Web 浏览器中,全局执行环境认为是 window 对象,因此所有全局变量和函数都是作为 window 对象属性和方法创建。 每个函数也都有自己执行环境。...当执行流进入一个函数时,函数环境就会被推入一个环境栈中。而在函数执行之后,栈将其环境弹出,把控制权返回给之前执行环境。

35020

干货 | 如何写一个更好Python函数

这个函数命名第一个问题是它使用了缩写。 对于那些并不出名缩略词来说,使用完整英语单词会更好。...对于大多数命名比较好函数来说,很明显有一些东西会从函数返回,它名字将反映这一点。 from_df也不是必要。如果没有明确参数名称,函数文档字符串或类型注释会描述参数类型。...如果你不能写一个清晰文档字符串来描述函数做什么,就说明你需要再考虑考虑为什么要写这个函数了。 返回函数可以认为是一些独立程序。它们以参数形式接受一些输入,并返回一些结果。...首先,尽最大努力避免这种做法。用好了令人惊讶,用不好非常危险。 其次,即使这样做不可行,复制某个参数成本太高,你也可以回到上一条建议。 “我需要返回多个值。单独返回一个值是没有意义。”...例如,如果上面add_three(number)幂等版本在返回结果之前打印了结果,那么它仍然认为是幂等,因为当它访问I / O流时,这个访问与从函数返回值无关。

59510

怎样才能写好一个 Python 函数

这个函数命名第一个问题是它使用了缩写。 对于那些并不出名缩略词来说,使用完整英语单词会更好。...对于大多数命名比较好函数来说,很明显有一些东西会从函数返回,它名字将反映这一点。 from_df 也不是必要。如果没有明确参数名称,函数文档字符串或类型注释会描述参数类型。...如果你不能写一个清晰文档字符串来描述函数做什么,就说明你需要再考虑考虑为什么要写这个函数了。 4. 返回函数可以认为是一些独立程序。它们以参数形式接受一些输入,并返回一些结果。...如果操作顺利完成,函数可以返回 True。 “我们修改了其中一个参数,将其用作参考参数。” 这里有两点需要注意。首先,尽最大努力避免这种做法。用好了令人惊讶,用不好非常危险。...例如,如果上面 add_three(number)幂等版本在返回结果之前打印了结果,那么它仍然认为是幂等,因为当它访问 I / O 流时,这个访问与从函数返回值无关。

56020

阿里架构师带你深入浅出jvm

对于每个方法执行,都会有一个新frame创建并入栈到栈顶部。当方法正常返回或在方法执行过程中遇到未捕获异常时frame会被出栈。...Frame 对于每一个方法执行,一个新frame会被创建并入栈到栈顶。当方法正常返回或在方法执行过程中遇到未捕获异常,frame会被出栈。...那些仍然存活着对象将被从年轻代移动到老年代 永久代会在每次老年代回收时候同时进行,它们在两者中其一满了之后都会被回收 JIT编译 JIT具体做法是这样:当载入一个类型时,CLR为该类型创建一个内部数据结构和相应函数...对于符号表组织、构造和管理方法好坏会直接影响编译系统运行效率。 在JVM中,内部字符串存储在字符串表中。...另外字符串实例可以通过调用String.intern()来明确地内部化。当String.intern()调用,如果符号表里已经包含该字符串,那么指向该字符串引用将被返回

68020

编写高效Android代码

下面是一件有帮助例子: 当从原始输入数据中提取字符串时,试着从原始字符串返回一个子字符串,而不是创建一份拷贝。你将会创建一个新字符串对象,但是它和你原始数据共享数据空间。...如果你有一个返回字符串地方法,你应该知道无论如何返回结果是StringBuffer,改变你函数定义和执行,让函数直接返回而不是通过创建一个临时对象。...一般来说明智做法是使用Map,因为它能够允许你改变Map接口执行上面的任何东西,但是这种“明智”方法只是适用于常规编程,对于嵌入式系统并不适合。...通过接口引用来调用会花费2倍以上时间,相对于通过具体引用进行虚拟函数调用。 如果你选择使用一个HashMap,因为它更适合于你编程,那么使用Map会毫无价值。...这运行更快并且去除了生成函数前面 东西。(不幸是,它同时也意味着该属性也能够相同包下面的其他类直接访问,这违反了标准面向对象使所有属性私有的原则。

59930

Cocos2d-x中使用音频CocosDenshion引擎介绍与音频文件预处理

SimpleAudioEngine有几个经常使用函数void preloadBackgroundMusic (const char *pszFilePath) 预处理背景音乐文件,将压缩格式文件进行解压处理...void pauseEffect (unsigned int nSoundId) 暂停播放音效,參数nSoundId 是playEffect函数返回ID。...void resumeEffect (unsigned int nSoundId) 继续播放音效,參数nSoundId 是playEffect函数返回ID。...void stopEffect (unsigned int nSoundId) 停止播放音效,參数nSoundId 是playEffect函数返回ID。...不管是播放背景音乐还是音效在播放之前进行预处理是有必要,这个过程是对于音频文件进行解压等处理,预处理仅仅须要在整个游戏执行过程中处理依次就能够了。

62320

深入理解 Java 中 Lambda

(arg); } } 关于oneStringArgumentMethod函数类型,与之相关有:它函数是静态返回类型是void,它接受一个String类型参数。...它必须包含一个名为apply函数函数返回类型必须是void函数必须接受一个String类型可以转换到对象参数。...Lambda表达式返回值类型是从Lambda实现推断出来对于参数类型,我不完全确定,但我认为必须从Lambda表达式所处上下文中推断出参数类型。...最后编译器必须检查返回值类型是否与Lambda上下文匹配,以及参数类型是否与Lambda实现匹配。 这一切都可以在编译期间完成,根本没有运行时开销。...Python社区很早就意识到了这一点 - 虽然Python也有Lambda,但它若广泛使用则通常被认为是不好风格(当嵌套函数可以使用时,它并不难于规避)。对于Java来说,我会给出类似的建议。

1K20

PHP 类型判断和NULL,空值检查

function test(array $names)//正确做法   function test(string $name)//错误做法   针对特定参数类型功能函数,在函数中对参入参数进行类型检查是很必须...在PHP中可以通过gettype和get_resource_type 两个函数得到变量类型,它们分别返回参数类型和资源类型字符串,此时可以直接进行字符串比较来确定类型是否正确。...isset只有在变量”未显式赋值或者赋值为NULL“时候返回为false,其他情况,比如值为空字符串,0等情况,它都返回true。 可以使用unset来删除一个已经定义变量。...但是从语义上来说,一个变量”是否已显示初始化“和”是否为NULL“是不同概念,在某些场景下使用isset是不合适,比如检查一个函数返回是否为NULL。...此时可以使用"=="和”===“来判断它们是否为NULL。 对于"=="和”===“,它们直接区别还是很大。对于"==",它认同空字符串,0,false都为NULL。

3.4K20

大话 JavaScript(Speaking JavaScript):第六章到第十章

这是推荐转换方法: > String(123) '123' 提示 最好做法是避免使用包装对象。通常情况下,您不需要它们,因为对象不能做事情原始值都可以做(除了改变)。...字符串解析。 首先将对象转换为原始值(稍后讨论),然后将其转换为数字。 String()(参见转换为字符串) 将值转换为字符串对于所有原始值,它都有明显结果。...PreferredType也可以省略;然后它被认为是日期String,而对于所有其他值,则认为是Number。这就是运算符+和==调用ToPrimitive()方式。...对于日期,首先调用obj.toString()。 如果任一操作数是字符串,则将两者转换为字符串返回结果连接。 否则,将两个操作数转换为数字,并返回结果总和。...引擎允许创建值,对于这些值,typeof返回任意字符串(与表中列出所有结果不同)。

26810

【Java】23 函数式编程

1.1 Lambda 表达式 1.1.1 冗余代码   当需要启动一个线程去完成任务时,通常会通过java.lang.Runnable接口来定义任务内容,并使用java.lang.Thread类来启动该线程...“一切皆对象”作为指导思想,这种做法没毛病:首先创建一个Runnable接口匿名内部类对象来指定任务内容,再将其交给一个线程来启动。...λ 表达式小括号内参数类型可以省略;如果小括号内有且仅有一个参数,则小括号可以省略;如果大括号内有且仅有一个语句,则无论是否返回值,都可以省略大括号、return关键字及语句分号。...,然而参数可能并不满足 show( ) 方法体执行条件,拼接好字符串就成了垃圾,此时就造成了性能浪费。...而是否调用其所在方法是在条件判断之后才执行。 1.3.2 Lambda 作为参数和返回值   Java 中 Lambda 表达式可以当作是匿名内部类替代品。

52520
领券