プログラムが読めた!

ようやく他人が書いたプログラムが読めました。

散々、自分でプログラムを書いてきたのに、人のプログラムが読めない。。

初めて、他人のプログラムを読んだときは、衝撃でしたし、ショックでした。

でも、その理由に最近気が付きました。

・そのプログラムの意図を理解していない。

先輩に言われて初めて気が付きました。


今まで自分が書いてきたプログラムというのは、そのプログラムの意図はすべて私の頭の中にあったわけです。意図も分からずただただ、ソースを見ていく、関数の中を追っていくでは読めるわけありません。


そこで意図を読み解くコツを見つけることができたので紹介します。


それは、

抽象化
です。抽象化してまずはなんとなく流れを読み解く。そしてその意図をゴールとして、
必要な関数や変数をメモしながら読み進めていく、そう、全ての関数、変数を読む必要はないけど、需要そうなところしっかりとメモして読んでいく。ここが大切。

また、実行順に読んでいくのが大切!
関数の中は見る必要は最初はありません!
関数化している。すなわち、抽象化済みなわけです!全体を見てもどうしても分からない場合は、ようやく関数の中を見るのが順番としては正しいようです。

この抽象化してメモを残しながら読むのに
フローチャートを作図するツールが、
非常に便利でした。なぜって?

以下のようなことができるからです。
・雑に変数や関数名をペタペタ貼ってきます。
・なんとなく並べます。
・その状態からソースを見ながら線を繋いでいきます。
この時メモ書きなので、フローチャートのルールはこうだからなんて考える必要はありません。会議中のホワイトボードのようにラフ書きでいいのです。

後で清書しやすいように便利な機能が備わってるので清書は後回しです。

私はこんな感じにフローチャートを書いてみました。

※関数の中の動きを後から書き出せるように、クラス図の枠組みを使ってます。
※一つのブロックの1行目は抽象化した意味。2行目はそのソースの1行分のコピペにしてます。そうすることでフローチャートをみてそこのソースを見たくなった時すぐ検索ができて便利です。


使ったツールはdraw.ioというフローソフトです。


フローチャートとを書いていく中でもっと効率のいい書き方ないかな?とか、不満が溜まってきたらようやく、フローチャートのルールを確認するのが良いかなーと個人的には思ってます。

私はフローチャートのルールをこのサイトで確認する予定です。笑笑
※UMLとは超簡単に言いますとフローチャートのルールを国際的にまとめたものです。

- UML超入門_第2章

2章では,簡単な業務システムを例にしてUMLの記法をひと通り詳しく解説して行きます. なるべく分かりやすく具体的な例として,社員の出退勤の管理を行う,勤怠管理システムを選びました. この章は入門ということで、通常のモデリング作業でよく用いられる基本的な要素に重点を置いて説明していきます。 UMLの図と、その図に使用される要素を説明するだけでなく、イメージしやすいように、 勤怠管理システムを例にして説明していくことにしましょう。今回の例に用いるのは、社員の出退社時間を管理するシステムです。 社員は出退社処理しか行えませんが、総務の人は勤怠変更入力することが可能です。 また、次期開発では、遅刻/早退の場合には、理由を入力する機能を持たせます。 画面のイメージは図1のようになっています。勤怠変更画面のイメージは省略します。 図1: ログイン画面/勤怠入力画面 UMLでは、以下の図が使用されます。勤怠管理システムを例に、順に説明していきましょう。システムの使用機能(ユースケース)と、外部環境(アクター)との関連を表します。 図を読み取るのに専門知識は必要なく、 一目でシステムの機能やシステム外部と内部の境界を理解することができます。 そのため、ユーザやクライアントとの意識統一を図ることが容易になるでしょう。 図の要素には、以下のものがあります。 表1: ユースケース間の関係 汎化ではどのように拡張するかが曖昧になるため、 ユースケースにバリエーションを持たせる以外では、 <<include>>や<<extend>>の依存関係を用いることが多くなるでしょう。 図2: 勤怠システムユースケース図 それでは、勤怠システムを例にユースケース図を見ていきましょう。 図2が勤怠システムのユースケース図です。 「社員認証」を含んだ「勤怠入力」機能があり、遅刻や早退だった場合には、 「早遅理由入力」機能により理由入力することが示されています。 「勤怠入力」機能である「出社」と「退社」は、 「社員」と「社員」の関連を引き継いだ「総務」によって利用されます。 また、「勤怠変更」機能は「総務」だけが利用でき、「勤怠変更」機能にも「社員認証」が含まれています。 「社員認証」/「勤怠入力」/「勤怠変更」機能は、 外部システムである「データベース」(*)を使用します。 ノートにより「早遅

objectclub.jp

復習終わり!わかりづらかったらすみません!

ケシェルのライフハック系ブログ

「巨人の肩の上に立つ」 量より質の良い記事作成を目指して 1日最大1記事にします。(毎日とは言っていません。) たくさん下書きを貯めてブラシアップした記事を上げてくつもりです。よろしくお願いします。(リアルタイム性には欠けますがご了承ください) ライフハックを生きる武器として発達障害を抱えながらも強く生きていくぞ!

0コメント

  • 1000 / 1000