■この記事の概要
この記事では、C言語のif
文においてthen
節とelse
節が同じ場合に表示される
-Wduplicated-branches
警告について解説しています。
また、if
文の条件が重複した場合の
-Wduplicated-cond
警告についても説明。
コードのリファクタリング時にこれらの警告を確認し、無駄なコードを整理して効率化する手法を具体例を通じて解説しています。
■if文のthen節とelse節が同じ
warning: this condition has identical branches
[-Wduplicated-branches]
//gcc -Wduplicated-branches
//gcc -Wall -Wextra では出ない
#include <stdio.h>
int duplicateBranch(int argc,char *argv[]){
if(argc == 1){
puts(argv[0]);
return 1;
}else{
puts(argv[0]);
return 1;
}
}
int main(int argc,char *argv[]){
duplicateBranch(argc,argv);
}
デバッグで行を追加したり削除したりを繰り返すと、
時々then節とelse節が同じになってしまう事があります。
この警告が出るとそろそろリファクタリング時かもしれません。
■if文の第1条件と第2条件が同じ
warning: duplicated ‘if’ condition
[-Wduplicated-cond]
//gcc -Wduplicated-condで警告
//gcc -Wall -Wextra では出ない
#include <stdio.h>
int duplicatedCond(int argc,char *argv[]){
if(argc == 1){
puts(argv[0]);
return 1;
} else if(argc == 1){
puts(argv[0]);
return 1;
} else{
return 0 ;
}
}
int main(int argc,char *argv[0]){
duplicatedCond(argc,argv);
}
第1条件と第2条件が同じなので意味がありません。
第2条件が無駄か別の条件が必要だった可能性があります。