我想用更好的方法重写if or语句,或者用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];
};有人能帮我做这个吗。谢谢。有人能帮我改写一下这篇文章吗。谢谢
发布于 2023-03-15 14:58:45
?块中使用if(result),因为您知道它不是null或未定义发布于 2023-03-15 15:16:11
//here checking if the title field is ...你觉得用英语单词来解释代码是值得的。好吧,很公平,这是一个很好的冲动,是我们希望鼓励的。但是,与其将注释写成一行,不如考虑使用一个名为hasTitle()这样信息丰富的布尔助手。如果您觉得还有更多的话要说,那么无论如何都要在谓词函数的顶部写一个注释。
if (result?.title && !isEmpty(result?.title)) return result.title;谨慎使用result?保护绝对是有帮助的。但一次就足够了:!isEmpty(result?.title)。第一个结合点在这里是多余的。
if (result) {后卫站在上面是多余的。
if (!result?.title || isEmpty(result?.title)) return something[status]在这里,德摩根定律很好地为您提供了这个稍微涉及的表达式。但是,如果你发现自己使用这两种形式,积极和消极,考虑命名的概念,并打破它,以更方便地参考它。
上述建议可供我们参考:
hasTitle(result),也可以! hasTitle(result)或分配给临时变量,以达到类似的效果。
或者依靠控制的流动。
给定布尔条件c,我们可以编写:
if (c) { return result; }
if (! c) { do_other_things(); }但是看看第一条声明对控制流做了什么。如果c,那么我们已经离开了!当我们得出第二条语句时,我们肯定知道c是假的。
同样地,依赖于else行为:
if (c) { do_one(); }
else { do_two(); }发布于 2023-03-15 19:25:24
很多开发人员的经验法则是,如果可以的话,避免嵌套条件,如果可能的话,尽早退出。只要稍微调整一下代码的顺序,就可以轻松阅读。
const title = () => {
if(!result) return titleByStatus[status];
if (isEmpty(result.title || '')) return something[status];
return result.title;
}如果您的isEmpty代码处理未定义/null,那么您可以只需
if (isEmpty(result.title)) return something[status];https://codereview.stackexchange.com/questions/283976
复制相似问题