如何解决SonarQube提示‘isInitialized已在上级作用域声明’的代码异味?
问题原因
你遇到的SonarQube提示,根源是变量遮蔽(variable shadowing):setIsInitialized函数的参数名isInitialized,和上层作用域中已声明的导出函数isInitialized重名了。虽然JavaScript语法允许这种写法,代码也能正常运行,但这种命名冲突会降低代码可读性,增加后续维护时出错的概率,因此被SonarQube标记为代码异味。
解决方法
修改setIsInitialized的参数名称,避开和上层的isInitialized重名即可。推荐使用语义清晰的名称,比如newIsInitialized或者value:
let _isInitialized = false; /** * Getter for _isInitialized * * @return {Boolean} _isInitialized */ export const isInitialized = function() { return _isInitialized; }; /** * Sets isInitialized * @param {Boolean} newIsInitialized new value for initialized */ export const setIsInitialized = function( newIsInitialized ) { _isInitialized = newIsInitialized; };
这样修改后,既能保持代码语义明确,也能消除SonarQube的代码异味提示。
内容的提问来源于stack exchange,提问作者YASH JADHAV
相关产品推荐
相关产品推荐

