モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用

著者 :
  • KADOKAWA (2019年1月31日発売)
2.67
  • (0)
  • (1)
  • (0)
  • (2)
  • (0)
本棚登録 : 38
感想 : 4
2

■知りたいこと
Cによる組み込み開発において、
・デザインパターンをどう実現するか
・TDD(テスト駆動開発)やCI(継続的インテグレーション)をどう実現するか

■総評
Cによるオブジェクト指向プログラミングやデザインパターンは、実用性がないと思う。
テストについては、モック化やstatic関数などの難しいところをどうすればいいのかを知りたかったが、結局は人手で頑張らなくてはいけないという当たり前の結論であった。
単体テストは労力を注ぎ込む領域ではないように思えるので、有償ツールがあるなら、それを買って済ませた方がいいのかもしれない。

■TDDの実践に必要なツール
・単体テストツール
 Google Testは便利そう。
・カバレッジ測定ツール
・モック化ツール
 モック化ツールは適当なものが存在しない。自分でCの関数をモック化する必要がある。

■OOP, デザインパターン
Cによるオブジェクト指向プログラミングの実現方法、および、Cに対するデザインパターンの適用方法が記載されているが、OOPはかなり無理があると感じた。変更局所化という意味での保守性は上がるかもしれないが、可読性という意味での保守性は下がると思う。やるとしてもLinuxカーネルのように関数ポインタを使うまで。ここまでやるなら最初からC++を使う方がいいと思う。
デザインパターンの章は読んでも意味がないと思い、読まなかった。

■単体テスト
・単体テストは品質保証ではない。ケアレスミスを発見するためのダブルチェックぐらいに考えるのがよい。テストを厳密に書いてしまうと、テスト作成作業のコストが単体テストのメリットを上回ってしまうことや、コード修正時にテストが壊れやすくなってしまうことなどの問題が発生する。

・モック化の方法
 (1)「ライブラリ差し替え」「マクロを利用した差し替え」…現実的
  ①H/Wアクセス箇所をライブラリにまとめておき、単体テスト時はライブラリをにせものに差し替え
  ②H/W呼び出しの入り口をすべてマクロにしておき、単体テスト時はマクロ定義を変更
 (2)「オブジェクト指向によるモックの実現」………保守性(可読性)が問題だと思う
 (3)「関数ポインタとマクロによるモックの実現」…保守性(可読性)が問題だと思う

・static関数をどうやってテストするのか
 (1) テストしない:
   あるモジュールが、外部公開I/Fのみを使ってテスト可能である場合に有効な考え方。数学的な処理や、アルゴリズムを実装したモジュールが該当(=副作用がない場合?)
 (2) テストコードからテスト対象のソースコードをincludeする。

■CI
「6,4 CI入門編」は、実際にCIを始める際に読むと役に立つかもしれない。

読書状況:読み終わった 公開設定:公開
カテゴリ: 技術
感想投稿日 : 2019年3月31日
読了日 : 2019年3月31日
本棚登録日 : 2019年2月7日

みんなの感想をみる

コメント 0件

ツイートする