Как избежать кодирования одного и того же кода дважды в операторе (if, if else), когда код должен выполняться, если единица истинна?

#if-statement #pseudocode

#if-statement #псевдокод

Вопрос:

Рассмотрим этот псевдокод:

 if(p){
 foo()
 bar1()
}
if else(q){
 foo()
 bar2()
}

  

Есть ли способ избежать записи вызова функции foo() дважды? Я мог бы написать:

 if(p||q){
 foo()
}
...
  

Но это единственное решение?

Комментарии:

1. Почему бы вам просто не запустить foo перед выполнением условной проверки?

2. @enhzflep потому что могут быть ситуации, когда ни p, ни q не являются истинными, поэтому foo вообще не должен выполняться

3. @WinnieThePooh вызов одной и той же функции дважды в разных ситуациях не является проблемой. Фактически, это идея модульности. Это может быть личное мнение, но мне больше нравится первый способ, потому что он кажется мне более читаемым. И для вашего второго фрагмента вам понадобятся два дополнительных if, чтобы проверить, запускать ли bar1 или bar2

Ответ №1:

Имейте в виду, что нет проблем с вызовом одной и той же функции как из if, так и из else, одна из причин, по которой мы функционируем, это возможность повторного использования, и это правильный способ ее повторного использования.

Один из вариантов избежать вызова одной и той же функции:

 if(p||q){
 foo();
 if (p){
   bar1();
 }
 else {
  bar2();
 }
}
  

Также помните, что читаемость кода ОЧЕНЬ важна, и, хотя это основано на мнении, я думаю, что ваш способ понятнее