組込み現場の「C」プログラミング 標準コーディングガイドライン
2007年11月27日紙版発売
福岡知的クラスタ(第I期)組込みソフト開発プロジェクト 編
A5判/216ページ/CD1枚
定価2,508円(本体2,280円+税10%)
ISBN 978-4-7741-3254-9
ただいま弊社在庫はございません。
書籍の概要
この本の概要
最近の現場にはコードの書き方をきちんと教わっていない人が増加しているとの話が聞かれます。「教える側」が多忙を極めていることにも原因がありますが,結果的に成果物にはバグが入り込んでしまいます。わかりやすいコードを書けば机上デバッグの精度も上がり,プログラムの効率的な再生産&再利用にもつながるのです。
本書は,組込み開発現場で遵守されるべきプログラミングのモデルを目指し,リアルな開発現場から得られたノウハウを盛り込んでいます。
こんな方におすすめ
- 組込みの現場で実際のプログラミングに携わっている方
- これから組込みの仕事に従事する方
- コードの管理に頭を悩ませている組込み現場の管理職
この書籍に関連する記事があります!
- 最近の組込み開発 ――「バグ」を出さないために大事なこと
- 近年ますます重要度を増しつつある組込みシステムの開発ですが,その現場は,いろいろな点で連鎖的に変貌しています。
目次
第1部 バグを作り込まないためのガイドライン
- ガイドライン01 つの変数には1つの役割だけを与える
- 変数を変身させると,正体を見失う
- ガイドライン02 変数は最小のスコープになるようにする
- 目の届く範囲が手が届く範囲
- ガイドライン03 変数の初期化は,わかりやすいところで行う
- 変数やレジスタの初期値は不定
- ガイドライン04 文字列は,可能なら文字配列として扱う
- char型ポインタはバグの温床
- ガイドライン05 初期化に使う文字リテラルの長さはコンパイラで数える
- 数え間違えるのは人間.コンパイラは正確に数える
- ガイドライン06 文字列では,最後をつねに意識する
- 文字列の終わりを示すヌル文字は単なる紳士協定
- ガイドライン07 文字列の長さの表記は統一する
- ヌル文字の数え方が破綻を引き起こす
- C言語には文字列型はない
- ガイドライン08 ブール型がないC言語では,真偽値の型と値を決めて使う
- 広く使用する定義はプロジェクトで統一する
- ガイドライン09 モノの種類は列挙型で表現する
- 同じ種類は同じ枠組みで管理する
- ガイドライン10 ポインタの使用をできるだけ制限する
- ポインタのバグは大域的に影響する
- ガイドライン11 複雑なポインタの使用はやめる
- 間接参照が重なると実体を見失う
- ガイドライン12 ビットフィールドが有効なら活用する
- ビットの操作はコンパイラに任せる
- ガイドライン13 最後のセミコロン(;)をチェックする
- 終端忘れは後にも響く
- ガイドライン14 複雑さは「()」で補う
- 暗黙の優先順位を明確にする
- 評価順序について
- ガイドライン15 数値計算では,計算の誤差や演算エラーを考慮する
- コンピュータは数学のようには計算しない
- ガイドライン16 暗黙の型変換を避ける
- 密かに行われる型変換を意識させる
- ガイドライン17 望みの型にするには,演算結果ではなくオペランドを
- キャストする
- 演算結果をキャストしても,手遅れ
- ガイドライン18 浮動小数点の比較は許容範囲を考慮する
- 浮動小数点数の計算には誤差がつきもの
- 実数を扱うときは誤差にも注意
- ガイドライン19 関数型マクロの予期せぬ展開を避ける
- 「関数型」であっても,実際は,置換されて展開されるだけ
- ガイドライン20 論理式はできるだけシンプルにする
- 複雑な条件は,判読/判定が困難になる
- ガイドライン21 0との比較や代入は,数値の0との場合だけにする
- 0は必ずしも数値の「0」に非ず
- 副作用と副作用完了点
- ガイドライン22 配列インデックスの名前と値に注意する
- バグは境界やすぐ隣に潜む
- ガイドライン23 ポインタが指している先を確認する
- 解放した領域は更新されているかもしれない
- ガイドライン24 ポインタの型をつねに意識する
- ポインタ型の取り違えでアドレス計算は狂う
- ガイドライン25 構造体を扱う演算には,マクロか関数を用意する
- 構造体は「パッケージ」,バラバラに扱うと意味がない
- ガイドライン26 トップダウンに読めるようにする
- 秩序のない視点の移動は思考の混乱を招く
- ガイドライン27 関連するものはできるだけまとめる
- 散在させると注意も散漫になる
- ガイドライン28 分岐やループの処理はブロック化する
- 制御の及ぶ範囲を明示する
- ガイドライン29 分岐やループの制御部と処理は分離する
- 制御の仕組みを一目で認識可能
- ガイドライン30 case節では,break文で終わらせるのを基本とする
- 独立であるべき事象に依存関係を持たせない
- ガイドライン31 else節やdefaultラベル節を省略しない
- 熟慮した痕跡を記録しておく
- ガイドライン32 適切なループ文を選ぶ
- 定石を逸脱したループは誤解のもと
- ガイドライン33 ループ管理に関する処理は,先頭か末尾にまとめる
- 流れに従った記述をすれば,読むのもスムーズ
- ガイドライン34 ループは先頭から入る
- ループパターンの逸脱はプログラムを脆弱にする
- ガイドライン35 ループからの脱出はわかりやすくする
- 抜け道は,迷い道
- ガイドライン36 複数のファイルで共有する宣言は1箇所にまとめる
- プロトタイプの不一致は暗黙の型変換を引き起こす
- ガイドライン37 ヘッダファイルになにもかも詰め込まない
- ヘッダファイルは実体を作るためのものではない
- ガイドライン38 ヘッダファイルをしっかりと設計する
- 適切な情報隠蔽で分割コンパイルのメリットを享受する
- ガイドライン39 ヘッダファイルの入れ子は慎重に行う
- 多重宣言のリスクを回避する
- ガイドライン40 デバッグやテスト用のコードを「出荷」しないようにする
- 一歩間違えると,品質向上の手段で品質低下
- ガイドライン41 assertを活用し,前提事項を確かめる
- バグを積極的に炙り出す
- ガイドライン42 コンパイラからのメッセージに耳を傾ける
- コンパイラの苦言は良薬である
- ガイドライン43 名前を大切にする
- 名は体を表すべし
- ガイドライン44 違いがはっきりわかる名前にする
- 識別できるがゆえに「識別子」
- ガイドライン45 名前の付け方に一貫性を持たせる
- 同じものを違う名前で呼ばない
- ガイドライン46 変数には,実装方法ではなく対象の名前を付ける
- 知らしめるべきは,「それがなにか」
- ガイドライン47 数字にも意味のある名前を付ける
- マジックナンバーは情報を隠蔽する
- ガイドライン48 真偽を表すものは,真偽が容易にわかる名前にする
- なにをもって真とするかが重要
- ガイドライン49 危険の徴候を名前で知らせる
- 大域的な注意の喚起は目立たせる
- ガイドライン50 関数には役割を表す名前を付ける
- 「なにをどうする」/「なにを返す」を訴える
- ガイドライン51 読み手に理解しやすい量を意識する
- 目で追えるから手に負える
- ガイドライン52 1つの行は1つの文にする
- タテ読み,ヨコ読みが混在すると,誤解/面倒のもと
- ガイドライン53 1行は読みやすい長さにする
- たいていの環境で収まる長さを心がける
- ガイドライン54 引数の順序を統一する
- インターフェースのアンマッチを防御する
- ガイドライン55 caseの並べ方には規則性を持たせる
- 混沌の中に誤りは隠れる
- ガイドライン56 レイアウトでプログラムの構造を可視化する
- 視覚的な整然さは,すなわち直感的なわかりやすさ
- ガイドライン57 インデントは,確かなものに揃える
- 不定なインデントはレベルを誤解させる
- ガイドライン58 コードを反復するようなコメントは避ける
- 自己解説的なコードは無駄なコメントを削減する
- ガイドライン59 他人のためにコメントする
- コメントは個人的な備忘録に非ず
- ガイドライン60 変更の容易なコメントのスタイルにする
- 過剰装飾は資源(労力/メモリ)の無駄使い
- ガイドライン61 コメントがコードの邪魔をしないようにする
- 補う情報で本体を隠さない
- ガイドライン62 定石を逸脱するときはコメントする
- 読み手の先入観や違和感を払拭する
- ガイドライン63 変数のコメントは,データ宣言の近くに簡潔に書く
- 遠い注釈は,見逃しと保守漏れの温床
- ガイドライン64 関数のコメントは,関数を使う立場で書く
- 要旨は見出し.必要最小限に
- ガイドライン65 ファイルのコメントには,モジュールの概要を書く
- 粒度に応じた要旨にする
- ガイドライン66 「うますぎるプログラム」にしない
- 超絶技巧よりも単純明解を優先すべき
- コーディングガイドライン チェックツールのポリシー
- ツールの実行環境の構築方法
- ツールの使い方
- ツール一覧
- チェックポイント一覧
第2部 正しく人が理解するための ガイドライン
この本に関連する書籍
-
組込み現場の「C」言語 基礎からわかる徹底入門 《重点学習+文法編》
組込みプログラマーはニーズも従事者も増加しているという現実があります。C++の利用も増えてきたとは言え,現状,相変わらず主流はC言語です。組込みプログラマーの経...
-
組込みエンジニアのためのC/C++プログラミングのヒント
本書は,組込みプレスの「C/C++プログラミング」関連の過去記事を再構成した書籍です。雑誌記事の特徴を活かしたピンポイントで実践的な内容です。 Part1では組込みソ...
-
組込み現場の「C++」プログラミング 明日から使える徹底入門
組込み開発におけるプログラムは,年々その規模が拡大しています。プログラムの行数も,最近3年の間に,10万行を超えるものの割合が全体の3割から6割以上へと倍増してい...
-
組込みシステム実践プログラミングガイド〜ITRON仕様OS/T-Kernel対応
本書は,ITRON仕様OSやT-Kernelを使用したシステムアプリケーションプログラムを開発するためのガイドブックです。組込みシステムにおけるプログラミングの基礎知識と応...
-
標準テキスト 組込みプログラミング 《ソフトウェア基礎》
組込みエンジニアの人材不足が問題となっています。資料によれば,2006年の時点でも94,000人ものエンジニアが不足,とされていました。言うまでもなく,こういった人材...
-
組込み現場の「C」プログラミング 基礎からわかる徹底入門
組込み開発が,日本メーカーが世界で生き残るための切り札ともなっていることは周知の事実です。ケータイをはじめとする家電のデジタル化や高機能化,またモデルチェン...
-
【実践】C言語による組込みプログラミングスタートブック
ソフトウェアエンジニアにとって,「組込み」の敷居が低くなってきています。本書は,ソフトウェアエンジニアのための「組込み」プログラミングの入門書です。付属のDVD...