• ベストアンサー

C++でのプログラミングの効率的な開発について。

C++でのプログラミングの効率的な開発について。 プログラミングをするうえで、こうすることで効率が上がった!というようなテクニックや 考え方などご教授ください。 人によって、設計をきちんとして書き始めるひともいれば いきなり書き始めるひともいるかと思います。 それぞれに合ったやり方というものもあるかと思いますが、 総合して、この書籍が役に立ったとか、 こうしたら作業の効率が上がったという話を頂けたら嬉しいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Interest
  • ベストアンサー率31% (207/659)
回答No.4

Level 1  ソースコードを書き始める前に設計をすること。設計図を描く場合、簡単なブロック図やフローチャートでも可。UMLを知っているならUMLで描くことをお勧めします。詳細設計までする必要は無くて、大雑把な設計でも設計したのとしないのとでは開発効率が大きく違います。また、設計図があればプログラムの動作がおかしくても自力で解決できないとき、他人にプログラムを説明するのが簡単です。 Level 2  設計図を書く前に、システム全体のアーキテクチャを決めておくこと。具体的には、外部からどういう入力が来たらプログラムはどういう出力をするのか、大雑把にどういう論理構造にするのか。ソースファイルをどのように配置するのか。これが決まっていると、設計の見通しが良くなり、また、後で機能を拡張したり使いまわしたりするときに楽になります。 http://www.ogis-ri.co.jp/otc/hiroba/technical/coal-ADD/index.html http://www.cc.matsuyama-u.ac.jp/~isshiki/04/PowerPoint/022105_kadota.ppt Level 3  アーキテクチャを決める前に、要求仕様を決めること。言い換えれば、何をするプログラムなのか具体的に言葉で記述します。例えば自動販売機であれば、自動販売機制御プログラムが提供する機能の一つに「商品を販売する」という機能(ユースケース)があり、そのシナリオは次のようになります。 1.顧客はコイン投入口にコインを入れる。 2.自動販売機は投入されたコインの合計投入金額を数える。  1.自動販売機は金額ディスプレイに合計投入金額を表示する。  2.合計金額が商品の値段以上になったら、購入可能な商品を選択可能にする。 3.顧客は商品選択ボタンを押す。 4.自動販売機は選択された商品を商品取り出し口に搬送する。  1.合計投入金額が選択された商品の金額より大きければ、コイン取り出し口にお釣りを出す。 このように大雑把な使われ方のシナリオ(ユースケースシナリオ)があれば、外部からどのような入力があり、どのような出力をすればよいか、プログラム上の部品にはどのようなものが必要になるか、自ずと見えてきます。このようなシナリオは詳細まで詰めないで大雑把にしておくことがポイントです。(詳細などどうせすぐに変わってしまうので。) また、テストは要求仕様を満たしているかどうか確認するための作業ですので、要求仕様はテストを行うための下準備にもなっています。 http://homepage3.nifty.com/koha_hp/process/Proc.Require.html Level 4  一度に全部実装しようとしないで、重要な機能から順に実装していくこと。開発サイクルを複数回にわけて重要な機能から順に設計、実装、テストしていくことで、スパイラル型とかインクリメンタル型と呼ばれる開発プロセスはこのことを指しています。 http://mobile-robots.way-nifty.com/daily_report/2009/03/tspi-49dc.html もうちょっと雑多な、やればすぐ出来るテクニックとしては、「課題管理表」を作ることですね。何か問題が起きたら課題管理表に書いておき、解決したらその原因と実施した対応策を記録します。そうすると、「あの問題はどうやって解決したっけ? まだ解決してなかったっけ?」という事態を防げます。 上記は、いずれもプログラミング言語に依存しない、ソフトウェア開発に不可欠な考え方です。Levelがあがるにつれて難しい話になっていきますので、まずは Level 1 からやってみることをお勧めします。

matoro6173
質問者

お礼

とてもわかりやすい説明ありがとうございます。 学び始めた頃はよくフローチャートを書いていました。 そのおかげか、だいたいの見通しを立てることができます。(精度は低いかもしれませんが) アーキテクチャの決定やユースケースは、知らずに使っていました。 だいたい紙にまとめながら書くことが多いです。 テストプログラムを書きながら(実行しながら)作成していますので おそらく4のこともやっていると思います。 方向は間違っていないことが分かり、とても助かりました。 「課題管理表」はExcelで作成しながらやってみたいと思います。

その他の回答 (3)

  • R32C
  • ベストアンサー率39% (115/290)
回答No.3

自分は、C++が主な開発言語じゃないんだけど 1.テスト駆動型開発(TDD) 2.スパイラル型開発 3.XP エクストリーム・プログラミング(と言っても一部です) あとツールとしては CppUnitあたりが使えたらと思います。 上記1.2.3.は実際にそれでやっています。 実際に開発対象によっては適用できないケースもあるかもしれません。 まぁ、なんかのライブラリとか開発するならやりやすいかもしれません。 ポイントは、コードを書く前にテストを書くこと。 そうすることで、仕様のあいまいさを解消しやすくなります。

matoro6173
質問者

お礼

1,2,3とも知らない単語でした。 一度本屋にいって、これらについて詳しく書かれたものを購入したいと思います。 単体テスト等はほとんど気にせずやっていましたので、 詳しい方法も一緒に学んでみたいと思います。 ありがとうございました。

回答No.2

こんにちは。 Visual Studioというソフトがあります。 今はExpress版が無償で本などに添付されています。 これを使うと、特にC++では開発効率が大幅に上がると思います。 また、本のタイトルで確か「プログラミングのコードの書き方」 というものがあり、私はそれに従って、Cの時からある決まりで、 コードを書くようにしています。 もちろん、コードに色がつくエディタを使うことをおすすめしますが、 まず、forやwhileなどの命令文は直後に半角スペースを1文字あける。 とか、命令文以外の関数は半角スペースを空けずに、書くとか、 for文のセミコロン(;)の後は半角スペースを1文字あけるとか、 {}で閉じるところは、見やすいように同じ列に書くとか、 =の両間には半角スペース1文字あける、 変数の名前は長めに、わかりやすい英数字を使う。 などです。これはあくまで私の場合ですが、 おかげで、この後半角スペース入れようかどうか、 迷うことなく、書きすすめられるので、自分のコーディングのルールを 作っておくと、プログラムを書くのが早くなりますよ。

matoro6173
質問者

お礼

現在VisualStudio2008 ExpressEditionを使用しています。 もしこれがなかったら……と考えると恐ろしいほどです。 インデントの箇所やコーディングルールを規定しておくと 驚くほど可読性が上がることは実感しています。 とても初歩的なことですが、とても大事なことだと思います。 ありがとうございました。

回答No.1

> こうしたら作業の効率が上がったという話を頂けたら嬉しいです。 できるだけ「書かない」 ライブラリを使え。

matoro6173
質問者

お礼

一番根本的な部分ですね。 書かないようにする技術もありますし。

関連するQ&A

専門家に質問してみよう