【C言語】
then節とelse節が同じ場合のリファクタリング方法(コードの効率化)

■この記事の概要

この記事では、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条件が無駄か別の条件が必要だった可能性があります。