首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数根据标题是否为空从结果对象获取标题。

函数根据标题是否为空从结果对象获取标题。
EN

Code Review用户
提问于 2023-03-15 14:51:15
回答 3查看 57关注 0票数 0

我想用更好的方法重写if or语句,或者用javascript重构我必须要做的代码。

下面是密码,

代码语言:javascript
复制
const title = () => {
    if (result) {
        //here checking if the title field is not undefined or null and title field 
        //has no empty string ""
        if (result?.title && !isEmpty(result?.title)) return result.title;
        // checking if title is undefined or null or is empty string ""
        if (!result?.title || isEmpty(result?.title)) return something[status] 
        (name);
    } else {
        return titleByStatus[status];
    };

有人能帮我做这个吗。谢谢。有人能帮我改写一下这篇文章吗。谢谢

EN

回答 3

Code Review用户

回答已采纳

发布于 2023-03-15 14:58:45

  1. 您不需要在?块中使用if(result),因为您知道它不是null或未定义
  2. 您的两个if语句是相反的,使用一个其他块if (结果){ if (result.title & result.title != "") {返回result.title;}{返回某物状态}-{返回titleByStatus状态;};}
票数 0
EN

Code Review用户

发布于 2023-03-15 15:16:11

1.提取助手

代码语言:javascript
复制
//here checking if the title field is ...

你觉得用英语单词来解释代码是值得的。好吧,很公平,这是一个很好的冲动,是我们希望鼓励的。但是,与其将注释写成一行,不如考虑使用一个名为hasTitle()这样信息丰富的布尔助手。如果您觉得还有更多的话要说,那么无论如何都要在谓词函数的顶部写一个注释。

2.简化表达式

代码语言:javascript
复制
        if (result?.title && !isEmpty(result?.title)) return result.title;

谨慎使用result?保护绝对是有帮助的。但一次就足够了:!isEmpty(result?.title)。第一个结合点在这里是多余的。

if (result) {后卫站在上面是多余的。

3.否定

代码语言:javascript
复制
        if (!result?.title || isEmpty(result?.title)) return something[status]

在这里,德摩根定律很好地为您提供了这个稍微涉及的表达式。但是,如果你发现自己使用这两种形式,积极和消极,考虑命名的概念,并打破它,以更方便地参考它。

上述建议可供我们参考:

  • hasTitle(result),也可以
  • ! hasTitle(result)

或分配给临时变量,以达到类似的效果。

或者依靠控制的流动。

4.控制流

给定布尔条件c,我们可以编写:

代码语言:javascript
复制
if (c) { return result; }
if (! c) { do_other_things(); }

但是看看第一条声明对控制流做了什么。如果c,那么我们已经离开了!当我们得出第二条语句时,我们肯定知道c是假的。

同样地,依赖于else行为:

代码语言:javascript
复制
if (c) { do_one(); }
else   { do_two(); }
票数 0
EN

Code Review用户

发布于 2023-03-15 19:25:24

很多开发人员的经验法则是,如果可以的话,避免嵌套条件,如果可能的话,尽早退出。只要稍微调整一下代码的顺序,就可以轻松阅读。

  • 所以,如果你把其他条件移到一个检查,你就可以退出。
  • 如果您没有标题,您可以进行一次检查。
  • 最后你可以把标题还给你。
代码语言:javascript
复制
const title = () => {
  if(!result) return titleByStatus[status];

  if (isEmpty(result.title || '')) return something[status];

  return result.title;
}

如果您的isEmpty代码处理未定义/null,那么您可以只需

代码语言:javascript
复制
if (isEmpty(result.title)) return something[status];
票数 0
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/283976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档