Javascript 可读性和IF块括号:最佳实践
我正在为学习JavaScript基础知识的1级大学学生准备一个简短的教程。任务是验证电话号码。数字不得包含非数字,且长度不得超过14位。下面的代码摘录是我想到的,我希望尽可能使它可读Javascript 可读性和IF块括号:最佳实践,javascript,readability,brackets,Javascript,Readability,Brackets,我正在为学习JavaScript基础知识的1级大学学生准备一个简短的教程。任务是验证电话号码。数字不得包含非数字,且长度不得超过14位。下面的代码摘录是我想到的,我希望尽可能使它可读 if ( //set of rules for invalid phone number phoneNumber.length == 0 //empty || phoneNumber.length > 14 //too long || /\D/.test(phone
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);
}
一个简单的问题,我自己不能完全回答,我想听听你的意见:如何定位周围(最外面)的括号?很难看出正常括号和卷曲括号之间的区别。您是否通常将最后一个)
与最后一个条件放在同一行?是否将第一个开口(
单独放在一行上?是否将每个单独的子条件也放在括号中?是否将第一个(
与最后一个)
水平对齐,或者是否将最后一个)
放在与if
相同的列中
您是将){
放在单独的一行上,还是将最后一个)
放在最后一个子条件的同一行上,然后将开头的{
放在新行上?还是将){
放在最后一个子条件的同一行上
社区维基
编辑
请仅就括号的使用和放置发表意见。代码不需要重新考虑。这是为几周前才开始使用JavaScript的人准备的。我不是在征求关于如何编写代码以使其更简短或性能更好的意见。我只想知道,如果有必要,您如何放置括号离子
message = invalid
if(phoneNumber.length > 0 && phoneNumber < 14 && /\D/.test(phonenumber)){
message = valid
}
setMessageText(message)
始终优于:
if(...)
{
}
在javascript中,这是因为分号插入,这在这里可能不是问题,但在其他情况下可能是问题,因此在使用该语言时最好保持相同的习惯
最后,我不会在代码中添加太多的括号,尤其是当所有内容都是“AND”时——当存在混合运算符优先级时,包含额外的括号很重要,因为不是每个人在阅读代码时都想考虑这一点
不过这有点主观。对不起。我会将验证电话号码的逻辑重构为一个函数:
function isValidPhoneNumber(phone) {
if (phone.length == 0) return false;
if (phone.length > 14) return false;
return !/\D/.test(phone);
}
也可以使用正则表达式检查长度:
function isValidPhoneNumber(phone) {
return /^\d{1,14}$/.test(phone);
}
通过验证电话号码的功能,代码变得更简单:
if (isValidPhoneNumber(phoneNumber)) {
setMessageText(valid);
} else {
setMessageText(invalid);
}
甚至:
setMessageText(isValidPhoneNumber(phoneNumber) ? valid : invalid);
图梅趾
图马图
除非有奇怪的习惯,“可读性”是你习惯看到的
我会将您的示例格式化如下:
//set of rules for invalid phone number:
// - not empty
// - not too long (14 characters)
// - can contain only digits
if (phoneNumber.length == 0 ||
phoneNumber.length > 14 ||
/\D/.test(phoneNumber))
{
setMessageText(invalid);
}
else
{
setMessageText(valid);
}
因为我更喜欢看到一起解释的逻辑,而不是散落在代码语句中。我喜欢一行中的大括号,使代码块更加突出
但是,正如其他人所指出的,“终极”这个例子的可读性,它应该被重构成至少一个
isValidPhoneNumber
函数任何类型的代码美学都是纯粹的争论。把它放在你想要的地方,并设置一个工具来自动格式化你的代码,如果你在一个团队中工作。谢谢。看起来你是唯一一个真正阅读这个问题的人。到底是什么我想:找出你是如何做到这一点的以及原因。在处理这个电话号码示例时,我碰巧问了这个问题,我还可以使用任何其他if块片段。没有必要考虑将其重新分解为单独的方法。再次感谢。
//set of rules for invalid phone number:
// - not empty
// - not too long (14 characters)
// - can contain only digits
if (phoneNumber.length == 0 ||
phoneNumber.length > 14 ||
/\D/.test(phoneNumber))
{
setMessageText(invalid);
}
else
{
setMessageText(valid);
}