トップダウン思考でプログラミングをしましょう。

f:id:hrmch-ioii:20180605235428j:plain

@nabeemichi

トップダウン思考でプログラミングとは?

ようは、目的を明確にして、目的から逆算してプログラミングをしようということ。

もっと具体的に言うと、やることをしっかり理解し、目的と現状のギャップを洗い出して、ギャップを埋めるようにプログラミングをするのです。

目的が明確になっていて、目的から逆算することとで、最短距離でプログラミングをすることができるため、無駄な実装が減ることが期待できるわけです。

逆の思考回路をするとどうなる?

トップダウン思考の反対は、ボトムアップ思考になるのですが、目的が明確になってないから、できることや知識、技術をベースに積み上げていくため

何がしたいのか?

どこに向かっているのか?

がわからなくなりやすく、実装している本人ですら迷子になることがあるわけです。

このボトムアップ的思考によって、本人ですら理解できないようなプログラムができあがったりするわけ。

なぜ本人も理解できないようなのができるかというと

目的がわからんから!

目的がわからないと、

役割がわからない。

役割ごとにカテゴライズされてないから、同じような処理をいろんなところで見かける。

目的からの逆算ではないから回り道が多すぎて無駄な実装が多い。


と、まぁこんな感じで目的が明確化されてないととにかくゴチャゴチャしてくるわけです。

つまるところ、頭が整理されてないので、やることが整理されてない。

TODOレベルまでの具体化されてないので、自分が何をするべきなのかも理解できてない。

と、いうような状態でソースコードを書いているのです。

こんなソースコードに出会うと、読んでいるこっちもものすごい頭を使って、いろいろなことを想定しながら読まないといけなくなりますが、

結局のところ、本人も目的をはっきり理解してないプログラムは、他人も理解不能なのです。

自分がわからないことを他人に伝えるなんてできません。自分で説明できないわけですから。

トップダウンでプログラミングすると

目的が明確化されてるので、一直線で目的にたどり着くプログラムが出来上がります。

無駄な実装がないので実装量も減るし、不具合も減る。


そして、目的が明確ということは、役割も明確になってきますので、役割別にカテゴライズされていくわけです。カテゴライズされると、勝手に整理されていいき、間違いにも気づきやすくなる。

何よりも、目的が明確なので他のエンジニアにも意思が伝わりやすくなる。

プログラミングなんて所詮はプログラミング言語を利用した文章なので、コミュニケーションできるようにしときましょ。