脱プログラム初心者に送る、要件をプログラムにするときのコツを Sagasoon。
脱初心者としてすべきこととして「要件の落とし方が読みやすいコードを書く」ということを、順を追って説明していきます。
そんなお話を2回話してきましたが、とうとう今回で最終話。
お付き合いくだすった方、ありがとうございました!
さてさて、第三回目の今回は、前回出てきた図を、コーディングに落としていきます。
これであなたも「脱初心者」。
張り切っていきましょう!
おさらい
第一回目は、大きく2つの話題が出てきました。
- プログラムを作る(コーディングする)とは、ある種、翻訳家みたいなもの
- どんな内容をどこに翻訳したかが分かるような書き方をしておくのが良い
第二回目は、一回目のお話を、段階に分けて翻訳し、図式化していきましたね。
- 要件を図式化
- 要件をかみ砕いたものを図式化
- 実装段階に図式化
詳細は、こちらから確認してください。
要望を図式化していく
まず、1回から3回目までに共通で使っているお客さんからの要望をご紹介しますね。
売り上げ上位10人について、傾向分析した結果を出してくれ
そして、第二回目に出てきた「実装段階に図式化」した画は、こんな感じでしたね。
図が、脱初心者のすべて
この画を見て、何が答え?って思っちゃいますよね。
え?何がいいたいんだと。
私が言わんとしている「脱初心者」の策は、「この図を描いてコーディングに落とすこと」です。
それがすべてです。
え?
簡単じゃないか?って?
そうです。
簡単な話なんですよ。
ほんと単純な考え方です。
実際のサンプルコードにうつす
ではでは、図式化されたものを使って、簡単にサンプルコードを書いておきます。
PHPやJAVAなどで書いても良いのですが、言語に縛られたコードを書くと意味が分かりにくいので、仮想言語でプログラムっぽく書いてみますね。
コメントを沢山入れてますので、分かるかと思います。
尚、プログラム開始は、main() からです。
/*全体処理*/ function main() { /*売り上げの上位10人分を取得*/ get_uriage_top10(); /*取得した10人分について傾向分析する*/ do_bunseki(); /*傾向分析した結果を出力する*/ output_bunseki(); } /*売り上げの上位10人分を取得*/ function get_uriage_top10() { /*売り上げ取得*/ get_uriage(); /*売り上げ高額順でソート*/ sort_uriage(); /*10人分抜き出し*/ take_uriage_top10(); } /*売り上げ取得*/ function get_uriage() { /*売り上げ取得準備*/ init_file_uriage(); /*売り上げ取得*/ get_uriage_from_file(); /*売り上げ取得終了処理*/ end_file_uriage(); } : : :
実際には、引数やら戻り値などを加味して書いていくわけですが、だいたいの雰囲気は見て取れるかとおもいます。
なぜ、こんな手順を踏むのか
恐らく、空気を吸うみたいにプログラムを組む人にとっては、「こんな手順なんて・・・」と思うはずです。
私もそう思いますからね(笑)
ただ、複雑な処理になればなるほど、「要件とプログラムコードの対応」が取りにくいです。
「どこに何があるか」とても把握しずらい状態になるということです。
そのために詳細設計書があるんじゃないかな?
と言われる方もいますが、半分正解で半分不正解です。
お仕事でプログラミングしていると実感するのですが、、「改造の要件」が出てきたとき、「設計書」よりも「プログラム修正」の方が「大事」になることがあります。
「設計書がおざなりになる」ことが多くなり、「設計書に書いてあること」よりも「プログラムで書いてあること」の方が真実になる場合が多々あります。
そうすると、設計書を読んだところで「古い情報」しか読み取れません。
なので、私はこうゆう翻訳を実践し、翻訳経緯をコーディングに盛り込むことを、皆さんに進めています。
「要件の落とし方が読みやすくなる」からです。
また、コーディングを読んでいくとわかるのですが、mainには3行しかコードが書いてないですよね。
これをみた時に、すぐ、
あぁ、全体的には3段階踏んでるんだな
と読めますよね。
この1個目の処理について、get_uriage_top10の中身をみると、これもまた3ステップに分かれてるのが分かります。
あぁ、売り上げ上位10人取得は、3段階で済むんだな
と直ぐに分かりますね。
こうして、要件を手順(段階)に落とし込んだところをみている先で、実際の内容(例えばファイルから取得するとか)が見えてくるというコーディングになってるわけです。
要件がどう翻訳されたか、
翻訳された内容が、どう実装されてるか
とても分かりやすいです。
まとめ
脱初心者のコーディング方法のコツ、私なりに考えることを全3回にわたって記載いたしました。
皆様、いかがだったでしょうか?
尚、こういったコーディングの方法が分かってくると、いわゆる設計レベルのことや、UMLなどのシステムの図式化などが、とても入りやすくなるかと思います。
是非、真似してみてくださいませ。
そして、全3回、見てくだすってありがとうございました!
コメント