重构此函数以降低其在 if else 条件下的认知复杂性
Posted
技术标签:
【中文标题】重构此函数以降低其在 if else 条件下的认知复杂性【英文标题】:Refactor this function to reduce its Cognitive Complexity for if else condition 【发布时间】:2021-08-30 03:05:21 【问题描述】:由于认知复杂性,我在声纳中遇到错误,请查找我的代码和随附的屏幕截图以获取更多参考。请帮我解决这个问题
useEffect(() =>
if (isFocused && isLoggedIn)
getProfileData();
if (isFocused)
dispatch(rewardsLandingScreenTracker());
, [dispatch, getProfileData, isLoggedIn, isFocused]);
有人也可以告诉我,如果像三元运算符这样的解决方案是什么
const savedPrice =
(actualPrice ? getConvertedPrice(actualPrice) : 0) -
(proPrice ? getConvertedPrice(proPrice) : 0);
【问题讨论】:
【参考方案1】:你可以改写成:
useEffect(() =>
if (isFocused)
if (isLoggedIn) getProfileData();
dispatch(rewardsLandingScreenTracker());
, [dispatch, getProfileData, isLoggedIn, isFocused]);
或
useEffect(() =>
if (!isFocused) return
if (isLoggedIn) getProfileData();
dispatch(rewardsLandingScreenTracker());
, [dispatch, getProfileData, isLoggedIn, isFocused]);
第二个可能会在返回不一致时引发 lint 错误(取决于您的 linter 设置)。然后你必须在回调函数的末尾添加显式的return
。
【讨论】:
好的,让我试试,我已经更新了我的问题并添加了车工操作员,如果车工操作员可以请你帮助我 如果n ? convert(n) : 0
是一种常见行为,只需将其放入convert
函数并将其重写为convert(n) - convert(m)
谢谢你,你能不能把上面的代码更新一下,我会参考其他的以上是关于重构此函数以降低其在 if else 条件下的认知复杂性的主要内容,如果未能解决你的问题,请参考以下文章
重构此方法以将其认知复杂度从 16 降低到允许的 15。如何重构和降低复杂度?