🌊

break文を使うべきか否か

2020/10/12に公開

某G社の人に、break文はbad practiceだからwhilestatementを使おうと言われた。

例を示そう。

for(int i=0;i<n;i++){
 if (a[i]== 10) {
   // do something.
   break;
 }
}

よりも

int i=0;
while(i<n && a[i]!= 10){
  // do something.
  i++;
}

の方がいいと言うようなことだ。そこで調べてみた。

https://stackoverflow.com/questions/3922599/is-it-a-bad-practice-to-use-break-in-a-for-loop#:~:text=No%2C break is the correct,a potential source of errors.&text=You can find all sorts,to use this whenever necessary.

https://softwareengineering.stackexchange.com/questions/58237/are-break-and-continue-bad-programming-practices

しっくりきたのはこの説明だ。

I do not believe they are bad. The idea that they are bad comes from the days of structured programming. It is related to the notion that a function must have a single entry point and a single exit point, i. e. only one return per function.

他にも

Typically, break and continue are disliked by people who like one entry and one exit from any piece of code, and that sort of person also frowns on multiple return statements.

プログラムの終了が一箇所の方がいいと言う美徳があるのだろう。

break嫌い派は以下の理由が見受けられる。

  • プログラムが複雑になり、またコードも読みにくくなる。
  • プログラムの終了が一箇所の方がいい(データの入力も)

まあ好みだろう。

Discussion