簡単なプログラミングではタイプにもよるが基本的に上から下に処理が進んでいくというフローになっている。バッチ処理など、順次処理を行っていくというのであればそれでも基本的には十分なのだが、アプリや比較的大規模なシステムなど、単純に処理が進むものではないシステムではそれでは限界がある。この時に関数やメソッドなどがある。
関数やメソッドは、他の場所から必要に応じて呼ばれた時に、それに定義された処理を行った後、その結果を返すというものである。例えば以下のようなものがある。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int getrand(void);
int main(void){
printf("random: %d", getrand());
return EXIT_SUCCESS;
}
int getrand(void) {
static _Bool initialized = false;
if (!initialized) {
srand(time(NULL));
initialized = true;
}
return rand() % 100;
}
上記のコードはメインルーチンから0〜99の乱数を取り出すgetrand()
関数を呼んだ結果を出力するというだけの簡単なコードだが、この中でgetrand()
については、他の関数からでも宣言さえしっかり行えば呼び出せる。例えば以下のようにすることもできる。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int getrand(void);
void printrand(void);
int main(void){
printrand();
return EXIT_SUCCESS;
}
int getrand(void) {
static _Bool initialized = false;
if (!initialized) {
srand(time(NULL));
initialized = true;
}
return rand() % 100;
}
void printrand(void) {
printf("random: %d", getrand());
}
上記のコードはmain()
関数は単純にprintrand()
を呼ぶだけにした上で、printrand()
にgetrand()
を読んだ結果を出力するという風に変更した。
上記のように関数をうまく使いこなすことによって、重複したコードを削減して、共通した処理にすることで、修正する数を減らすことができるなどメンテナンス性が向上する。
近年ではIDEも性能が良くなっており、関数を定義した場所へ簡単にジャンプできるようになっているものも増えている。したがって、近年ではうまく関数やメソッドを使いこなせるようにしたいところである。
上から下に処理をフローさせる書き方にしか慣れていない方には厳しいかもしれないが、覚えておいて損はないだろう。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。