Если вы можете использовать переменные, вы можете преобразовать части выражения в переменные, а затем использовать эти переменные в своем выражении. Вот пример
// initial complex boolean expression
const x = "blah";
if (x === "asdfasd" || (x !== "asdfasd" && x.length < 4)) {
// match
}
// save parts of the complex boolean expression into variables
const isCondition1 = x === "asdfasd";
const isCondition2 = x !== "asdfasd";
const isCondition3 = x.length < 4;
// use those variable
if (isCondition1 || (isCondition2 && isCondition3)) {
// match
}
// use the variables to continue simplifying the expression
const isCondition4 = isCondition2 && isCondition3;
if (isCondition1 || isCondition4) {
// match
}
// until you are left with one expression
const isCondition5 = isCondition1 || isCondition4;
if (isCondition5) {
// match
}
Так что
if (x === "asdfasd" || (x !== "asdfasd" && x.length < 4)) {
// match
}
Можно переписать как
const isCondition1 = x === "asdfasd";
const isCondition2 = x !== "asdfasd";
const isCondition3 = x.length < 4;
const isCondition4 = isCondition2 && isCondition3;
const isCondition5 = isCondition1 || isCondition4;
if (isCondition5) {
// match
}
Я бы также переместил эти выражения в функции и организовал бы эти функции в отдельных папок / файлов.
isCondition1. js
module.exports = x => x === "asdfasd";
isCondition2. js
module.exports = x => x !== "asdfasd";
isCondition3. js
module.exports = x => x.length < 4;
isCondition4. js
const isCondition2 = require("isCondition2");
const isCondition3 = require("isCondition3");
module.exports = x => isCondition2(x) && isCondition3(x);
isCondition5. js
const isCondition1 = require("isCondition1");
const isCondition4 = require("isCondition4");
module.exports = x => isCondition1(x) || isCondition4(x);
index. js
const isCondition5 = require("isCondition5");
if (isCondition5(x)) {
// match
}