新人技術者のためのロジカル・シンキング入門(2) ―― プログラミングにおける良いデータ構造
ここでは,組み込みソフトウェアにおけるデータ構造とその管理方法について解説する.どのようなデータ構造をとるかをシステム開発の早い段階で決めておくことで,保守性の高いプログラムを設計できる.指針を立てるためには,自分が設計するシステム,あるいは機能ブロックがどのような性質のデータを扱うのか,プログラミング言語で実装するにはどの種類の変数(外部変数,ローカル変数,テーブルなど)を使えばよいのかを十分に検討することがたいせつである. (編集部)
技術解説・連載「新人技術者のためのロジカル・シンキング入門」 記事一覧
第1回 いかにしてバグの原因を突き止めるか
第2回 プログラミングにおける良いデータ構造
第3回 「必要とされる設計書」の作り方
第4回 直したバグがゾンビのごとく復活する
第5回 ソース・コード規約の作り方
第6回 ハードウェア基礎の基礎
第7回 「ひたすら流すだけのテスト」にさよなら
第8回 CPUの演算量をひたすら削る
第9回 メモリ転送速度の最適化設計
第10回 「工学の知」を実務に生かす
●お知らせ
本連載記事を元に加筆・再編集した書籍『組み込みエンジニアのためのロジカル・シンキング入門』が好評発売中!
● どこもかしこも外部変数
Bさんはプロジェクトに参加するにあたって,ソース・コードを資料として渡されていました.「どれどれ」と思いながらプログラムを読み進めたBさんは,まもなく頭を抱えることになります.外部変数と思われる変数があちこちに散らばっていて,関数の挙動が読みにくかったからです.
外部変数であるということは,ソース・コードのどこからでもリード/ライトが可能ということです.そのため,これらのソース・コードをデバッグしようとすると,ソース・コードの中にかたっぱしからgrep 注1をかけて,ソース・コードのどこからのアクセスが最初かを特定しなければなりません.
注1;特定文字列の照合(パターン・マッチング)を行うコマンド.
立ち上げ時からこのプロジェクトを率いているベテランSEのPさんにこのことを話すと,「そのとおりなんだ.若い連中は開発の基本がわかっていないよね.もう一度基本に立ち返って開発を立て直すためにレビューが必要なんだ」とのことでした.
でもよく考えてみると,Pさんがそれなりに早い段階で方針を定めていれば,ソース・レビューを行う以前に,こういうソース・コードは生まれなかったのではないでしょうか....「Pさんに評論家以上の役割を期待するのは無理かな」と,Bさんはふとため息を漏らしてしまうのでした.
これからBさんが担当する機能ブロックは,既存のコードを多数流用する必要があります.もし開発の切れ目で時間がある程度とれるのであれば,なんとか保守性を高めたソース記述にしたいのですが,どうすればよいのでしょうか?