C言語編 目次

 関数設計

 

・関数名の命名規則
・プログラミングに出る!英単語

 ポインタ

 

・データ型とポインタ

 データ型

 

・char *とconst char *は違う
・符号付きと符号なし

 演算子

 

・三項演算子とデータ型の問題

 制御構文

 

・条件式で代入する
・三項演算子を使ったswitch

 構造体

 

・構造体のサイズとアライメント
・構造体メンバのサイズを知る

 配列

 

・配列使用時の注意
・配列の要素数を知る

 メモリ管理

 

・メモリスタック
・動的メモリ確保とメモリリーク

 モジュール設計

 

・モジュール分割
・汎用モジュールとアプリ依存モジュール

 パフォーマンス
  徹底チューニング

 


・どんな処理に時間がかかるのか
・ファイル入出力の効率化
・アルゴリズムを考える1
・アルゴリズムを考える2

 プリプロセッサの便利機能


・2重インクルード防止

 


トップページへ戻る

モジュール分割

 C言語のプログラムは、ごく短いものならmain関数だけでできます。でも、main関数だけで完結できるのはせいぜい20〜30行程度です。それ以上大きくなる場合は関数を作ります。それでも1つのソースファイルの中に何十個も関数ができてくると、今度はソースファイルを複数に分割するようになります。C言語では、このファイルに分割した単位をモジュールと呼びます。さらに大きくなると、今度はライブラリを作ったりします。

 プログラムを作るときは、無計画に作り始めるのではなく、最初に「設計」をしたほうがいいのは言うまでもないですが、ではどのように設計すればよいのでしょうか。

 現在主流になっている考え方は、「分割して作った細かいモジュールを組み合わせて大きなプログラムを作る」という発想です。これにはいろいろと利点があります。まずモジュール間の結合度を低くすることによって、バグの原因を局所化できます。

 担当をはっきりわけておけば、何かあったときに、自分の責任なのか、自分の責任じゃないのかはっきりしますよね?それと同じです。また、モジュールが小さければ小さいほど、バグの原因究明で解析する範囲が小さくなりますよね。

 もう一つの利点は「再利用性」です。極端なことを言えば、main関数の中にすべて書いてしまってもプログラムはできるわけですが、それだと一部を抜き出して他のプログラムに転用するということは困難です。より細かく、汎用的なモジュールを作ることによって、他のプログラムに再利用できるパーツが増えてくるわけです。