Если вам хочется получить "самодокументируемый" код, сложные и не очевидные проверки выносите в функции.
function checkUser(user) {
return (user != null && user.name != null && user.role == 'admin')
}
function checkSetupConfig(params) {
var isValid = false;
if (checkUser(params.user) || params.installationPath != null) {
isValid = true;
}
/// тут могут быть еще проверки ...
return isValid;
}
function setup(params)
{
if (checkSetupConfig(params)) {
//
}
}
писать 1 return в конце, или внутри if-ов тоже их расставлять - чистая вкусовщина и зависит от команды.
Например, когда я был на проекте с огромным количеством легаси, и встречались методы классов на 100-300 строк(что есть плохой дизайн, но все же), то 1 return в конце, облегчал assessment. Можно сразу смотреть вниз и понимать что выкидывается из метода.
Особенно актуально для нетипизированных языков типа JS. Когда в разных местах return может возвращать что угодно, число, объект с ошибкой, строку.
И еще, возвращать код завершения -- плохой тон, если в вашем коде "1" --- несет какой-то смысловой смысл, то лучше сделайте enum, или собирайте объект типа:
var validationResult = {
isValid : fale,
errorMessage : 'User not logged in',
// errorCode : 'UE001', // лучше коды делать строками, и читабельными, но можно и 1
errorCode : 1
}