Итак, мой фактический вопрос: если у меня есть несколько случаев if-elseif, которые ищут 1 правильное совпадение, но все случаи получили много одного и того же кода, но некоторые случаи немного отличаются, какой способ наиболее эффективен?Как обрабатывать ветви кода, прежде чем он станет слишком грязным?
Сортировка по ролям и повторяющийся код?
$user_role = 2;
if ($user_role === 1) {
codeMethod1();
codeMethod2();
} elseif ($user_role === 2) {
codeMethod1();
codeMethod2();
codeMethod3();
} elseif ($user_role === 3) {
codeMethod2();
codeMethod3();
}
или, сортируя по коду/процессу и делайте огромные заявления if?
$user_role = 2;
if ($user_role === 1 || 2) {
codeMethod1();
}
codeMethod2();
if ($user_role === 2 || 3) {
codeMethod3();
}
Я понимаю, что для некоторых людей это глупый вопрос, потому что они уже все поняли. Я новичок в программировании, и я просто хочу получить это с самого начала. Я не хочу разрушать свою программу или разрушать ее для людей, которые могут исправить мой код.
UPDATE
Сценарий вопрос осветления:
Когда пользователь вводит свой сайт, я определяю их как 1 из 5 категорий. Некоторые пользователи получат такое же лечение с некоторыми вариантами, в то время как другие получат дико различное лечение. Существует около 20 различных методов, в которых некоторые пользователи будут использовать их все, а другие будут использовать мало.
Таким образом, лучше и/или эффективнее перечислять методы, необходимые каждой категории, хотя многие из них будут выглядеть одинаково.
Пример:
$user_role = getCurrentUserRole();
switch ($user_role) {
case 1:
(uses method1() to method10())
break;
case 2:
(uses method5() to method15())
break;
case 3:
(uses method10() to method20())
break
case 4:
(uses method1() to method20())
break
case 5:
method1();
method4();
method8();
method15();
method20();
}
ИЛИ, это лучше, чтобы перечислить все методы и использовать, если заявления, чтобы увидеть, если $user_role
это нужно?
Пример:
$user_role = getCurrentUserRole();
switch ($user_role) {
// Check for method1
case (1 || 4) {
method1();
}
// Check for method2
case (1 || 4) {
method2();
}
... skip ...
// Check for method5
case (1 || 2 || 4) {
method5();
}
.. Continue checking role permission for each method ..
}
Пожалуйста, игнорируйте мой плохой английский, и скажите мне, чтобы уточнить, если вы не получите мой вопрос.
Используйте 'switch' вместо нескольких, если else при сравнении. Только одно значение: $ user_role –
Switch к переключателю, когда сможете. Он делает код чистым.Кроме того, если вы их должны иметь, получите хорошую среду IDE. – Andrew