可读性和IF块括号:最佳实践

Pet*_*háč -1 javascript readability brackets

我正在为1级单身学生学习JavaScript基础知识准备一个简短的教程.任务是验证电话号码.该号码不得包含非数字,且长度不得超过14位.下面的代码摘录是我想出的,我想尽可能让它变得可读.

if (
    //set of rules for invalid phone number
        phoneNumber.length == 0 //empty
    ||  phoneNumber.length > 14 //too long
    ||  /\D/.test(phoneNumber) //contains non-digits
) {
    setMessageText(invalid);
} else {
    setMessageText(valid);
}
Run Code Online (Sandbox Code Playgroud)

一个简单的问题我无法回答自己,并希望听到你的意见:如何定位周围(最外面)的括号?很难看出普通和大括号之间的区别.你通常把最后一个)放在与最后一个条件相同的线上吗?你自己保持第一个开口(吗?您是否也将每个子条件包装在括号中?你是水平对齐第一个(和最后一个),还是将最后一个)放在同一列if

你是保持) {单独的一行还是将最后)一行放在同一行的最后一个子条件下,然后将开口{放在一个新行上?或者你只是把它) {放在最后一个子条件的同一行?

社区维基.

编辑 请仅发布关于括号的使用和放置的意见.代码不需要重新考虑.这适用于几周前才引入JavaScript的人.我不是在征求意见如何编写代码,因此它更短或性能更好.我只想知道如何在IF条件下放置括号.

Guf*_*ffa 5

我会重构将电话号码验证为函数的逻辑:

function isValidPhoneNumber(phone) {
  if (phone.length == 0) return false;
  if (phone.length > 14) return false;
  return !/\D/.test(phone);
}
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用正则表达式检查长度:

function isValidPhoneNumber(phone) {
  return /^\d{1,14}$/.test(phone);
}
Run Code Online (Sandbox Code Playgroud)

通过验证电话号码的功能,代码变得更简单:

if (isValidPhoneNumber(phoneNumber)) {
  setMessageText(valid);
} else {
  setMessageText(invalid);
}
Run Code Online (Sandbox Code Playgroud)

甚至:

setMessageText(isValidPhoneNumber(phoneNumber) ? valid : invalid);
Run Code Online (Sandbox Code Playgroud)