C言語編 目次

 関数設計

 

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

 ポインタ

 

・データ型とポインタ

 データ型

 

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

 演算子

 

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

 制御構文

 

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

 構造体

 

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

 配列

 

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

 メモリ管理

 

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

 モジュール設計

 

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

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

 


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

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


・2重インクルード防止

 


トップページへ戻る

関数名の命名規則

 このセクションでは、関数設計についてのノウハウを書いていきたいと思います。
C言語では、文法にのっとっていれば自由に関数を作ることができます。どのような名前をつけてもいいし、どんな引数や戻り値にしてもいいし、どんなに長い関数や逆に短い関数でも作ることができます。

 でも、自分の好き勝手に作っていたら、独りよがりなおかしなプログラムになってしまいますよね。なんでもそうですが、一般的な「作法」というものがプログラムにもあります。

 よくプログラムを「1から作る」と言うことがありますが、関数設計に関しては、創造性は必要ありません。ここはほぼ機械的にできます。ここはオリジナリティを出すところではなく、逆にオリジナリティを出すと、他の人が見た時に「なんじゃこりゃ」と思われてしまうでしょう。

 関数設計は、より「一般的で」「自然な」設計になるように意識することが大切です。

 ではまず、関数名の付け方を見てみましょう。Cの標準関数は小文字で統一されていますが、ユーザ関数はシステム関数と区別するために、単語の区切りごとに先頭を大文字にします。例えば、strlen()という関数がもしユーザ関数だったら、StrLen()になります。

 次に、単語は基本的に「動詞」+「目的語」の形式をとります。その関数が「何を」「どうする」関数なのかというのをそのまま関数名にするわけです。例えば、ファイル一覧を取得する関数であれば、GetFileList()になります。

 少し特殊なケースとして、何かが真なのか偽なのか問い合わせる関数があります(こういう関数は戻り値がbool型です)。このような関数は、Is +「何が」+「どうなのか」という名前をつけます。例えば、ユーザIDが有効かどうかを検査する関数は、IsUserIDValid()になります。ちょうど、英語の疑問文のような形式になります。

 C言語では、ある程度大きなプログラムになると、プログラムをモジュールに分割して作ります。モジュールに分割した場合は、モジュール名を関数名の頭につけてもよいでしょう。例えば、ファイル入出力を扱うモジュール「file」を作ったとしたら、関数名はFileOpen()、FileClose()、FileSeek()のようになります。(この場合、目的語はfileなので、FileOpenFile()のように2重に書く必要はありません。)

 また、関数名はなるべく短くなるようにしましょう。例えば、StringConvertUpperCaseToLowerCase()なんていう関数名は長すぎるので、適当に省略して、StrToLow()ぐらいにしておきましょう。

 最後に、関数名は英語でつけてください。関数名にJikokuとかOomojiなんて言葉が入っていると非常にかっこ悪いです^^;