Home > C言語 > プログラムの可読性

KENスクールはITエンジニア・Web/DTP・オフィスPCの専門パソコンスクール

プログラムの可読性

  • Posted by: kenschool
  • 2009年4月 6日 18:46
  • C言語

プログラムの可読性とは、
文字通り「プログラムの読みやすさ」の事です。


プログラマとして業務につく場合は、
他者にチェックしてもらうためにプログラムの体裁を整えなければ
理解してもらう以前に見てもらえません。


では、個人なら自由にプログラムを書いても良いかというと、

例えば、数ヵ月後に見直した時に、
自分が「何を考えて、このプログラムを組んだのか」が分からない
非常に切ない思いをしてしまいます。


このように可読性は、単純に改行・インデント・スペースといった見栄えの他に
ちょっとしたプログラムのテクニックでも大きく変わってきます。


例えば、以下のプログラム(C言語)があったとしましょう。
----------------------------------------------
#include<stdio.h>

int  funcA(int num){
    int ret;
 
    if(num >= 0){
        ret = 1;
    }else{
        ret = 0;
    }
 
    return ret;
}

int  main(void){
    int  number, chk;
 
    scanf("%d", &number);

    chk = funcA(number);
 
    if(chk == 1){
        printf("正の値です。\n");
    }else{
        printf("負の値です。\n");
    }

    return 0;
}
----------------------------------------------

Javaを学習されている方も、classの囲いが無いと考えれば、
何となく内容は分かると思います。
(乱暴な表現ですが)


ちなみに scanf("%d", &number); は、ユーザに整数を入力させて、
変数 number に格納する命令です。


まず、注目するのは main()関数の中の条件分岐文です。

直前で funcA() 関数を呼び出し、戻り値を chk で受け取り、
その値を判断しています。


この「戻り値を一度変数に格納する」という行為を省略し、
直接、条件式に組み込むと、以下のようになります。

(main() 関数のみ抜粋)
----------------------------------------------
int main(void){
    int number;
 
    scanf("%d", &number);

    if(funcA(number) == 1){
        printf("正の値です。\n");
    }else{
        printf("負の値です。\n");
    }

    return 0;
}
----------------------------------------------

変数の宣言が一つ減って、スッキリしました。


さらにC言語では、if文の条件式が
0以外なら「True」、0なら「False」と判断します。


funcA() 関数の戻り値は、0か1か決まっているので、
いちいち 1 と比較するのは、野暮ったいです。


よって、
----------------------------------------------
int main(void){
    int number;
 
    scanf("%d", &number);

    if(funcA(number)){
        printf("正の値です。\n");
    }else{
        printf("負の値です。\n");
    }

    return 0;
}
----------------------------------------------

この記述で十分です。


次に funcA() 関数ですが、引数が正か負かによって
変数に 0 または 1 を代入していますが、
この変数を最初から 0で初期化しておけば else の記述は不要です。


よって、最終的に
----------------------------------------------
#include<stdio.h>

int funcA(int num){
    int ret = 0;
 
    if(num >= 0){
        ret = 1;
    }
 
    return ret;
}

int main(void){
    int number;
 
    scanf("%d", &number);

    if(funcA(number)){
        printf("正の値です。\n");
    }else{
        printf("負の値です。\n");
    }

    return 0;
}
----------------------------------------------

こんな風になりますね。


あとは、funcA()関数の概要などをコメントで記述しておけば
後から見直しても問題ない記述になるでしょう。
( funcA() という関数名も問題ですね…)


最後に同じプログラムを可読性の低いものに書き換える
----------------------------------------------
#include<stdio.h>
int abc(int z){
int y;
if(z>=0) y=1;
else if(z<0) y=0;
return y;
}
int main(void){
int a,b;
scanf("%d",&a);
b=abc(a);
if(b==1) printf("正の値です。\n");
else if(b == 0) printf("負の値です。\n");
return 0;
}

----------------------------------------------

どうですか?
これでも結果は変わりません。


どんなプログラムでも動けば良いと思っていませんか?
インデントだけでも印象は大きく異なるのです。


プログラムに慣れてきたら、是非、
可読性を意識してみてくださいね。

--------------------------------------------------------------------------------

パソコンスクール KENスクール蒲田校 Programインストラクター
http://www.kenschool.jp/school/kamata/index.html

KENスクールでプログラムを学びたい方は、Program講座へ!
http://www.kenschool.jp/Program/index.html

トラックバック:0

TrackBack URL for this entry
http://it.kenblog.net/mt-tb.cgi/529
Listed below are links to weblogs that reference
プログラムの可読性 from KENスクールはITエンジニア・Web/DTP・オフィスPCの専門パソコンスクール

Home > C言語 > プログラムの可読性

Search
Feeds

ページトップへ