なにもないへやですがごゆっくりどうぞ

独学フリーランスエンジニアの勉強部屋

思考 本棚

プログラミング初心者が意識したい「まとまり」のハナシ。

投稿日:

ども!

ryota@i2AAです!

 

僕はプログラミングの勉強を独学でしているので、

本屋のプログラミングコーナーに頻繁に足を運んでいます。

 

自分がいま手掛けている言語や、

次に勉強してみたい言語の本をよく見るんですが、

言語だけじゃなくて

「プログラマーとしての考え方」

「プログラミングとはなにか」

「これからの情報技術について」

みたいな、ちょっと抽象度高めの本も好きで、よく物色してます。

 

「プログラマが知るべき97のこと」を読んでみた

その中で気になった本があって、

「プログラマが知るべき97のこと」

というタイトルなんですが読んだことがある人も多いんじゃないでしょうか。

 

で、ちょっと検索してみたんですが、実はこれWeb上で全文(おそらく)公開されています。

 

買う前に発見してよかった!笑

 

どんな内容か見てみたい~という方はこちらをどうぞ。

→「プログラマが知るべき97のこと

 

で、一通りざっと読んでみたんですけど、

結構衝撃を受けた記事がありまして、

それが

名前重要」 by Matz

という記事です。

 

「名前重要」ってどーゆーこと?

Matzさんとは、Rubyを作ったあの「まつもとゆきひろ」さんのことです。

 

で、この記事の一文でこんなことを仰ってます。

 

適切な名前をつけられると言うことは、その機能が正しく理解されて、設計されているということで、逆にふさわしい名前がつけられないということは、その機能が果たすべき役割を設計者自身も十分理解できていないということなのではないでしょうか。

 

これを読んだとき、

「そうそう!これこれ!」

と思わず唸ってしまいました。

 

普段、コーディングをしていくときに、

メソッド(関数)を作るタイミングというかスコープというか、

どこからどこまでをひとつのまとまりにするか、

ということで結構迷うんですよね。

 

「ひとつのまとまり」って人によって感覚が違うじゃないですか。

 

自分だけがわかればある程度やりやすいんですけど、

このコードを誰かが修正するってことを考えると、

客観的に見てわかりやすいまとまりである必要があります。

 

細かすぎてもあかんし、

おおざっぱすぎてもあかんし…

 

調べてみてもなかなか明確な回答ってものがなかったのでちょっともやもやしてました。

 

そのタイミングでこの記事を見て、脳内のシナプスがばちばちばちーっ!とつながりました。

 

「そのまとまりに名前をつけることができるかどうか」

って考えたらめっちゃシンプルでわかりやすくないですか?

 

たとえば、

 

・リストAに文字列aを格納する

・リストBに文字列bを格納する

・文字列aを一文字ずつ分解し、その文字が文字列bと一致するか確認する

・一致した場合は処理Xをする、一致しない場合は処理Yをする

 

ということがあったとき、

それぞれの動きを「まとまり」と見ることができるし、

 

・リストに文字列を格納する

 

という動きを「まとまり」と見ることもできます。

 

もしくは、最初から最後までの動きを

 

・文字列チェック

 

というシンプルな「まとまり」と見ることもできます。

 

どんな条件でどうチェックしているのか、

自分以外の人も知っているのであればまとめる単位はこれぐらい大きくてもいいかもしれません。

 

「文字列チェック」

という名前をまとまりに対してつけることができるので、

ここまでをメソッドにすればいいってことですね。

 

この基準が自分の中にできてから、

リファクタリング(一度書いたコードに対して、同じ結果を維持しながら書き直すこと)がめちゃくちゃスムーズになりました。

 

チャンク化を意識してコーディングしよう!

こういったまとまりを作ることを一般的には

「チャンク化」

というんですが、チャンク化がスムーズにできてくると全体把握もスムーズになります。

 

たとえば、はじめて車に乗ったときって、

ミラーの位置を調整、

シートの位置を調整、

周りに人がいないか確認、

シートベルトを締める、

周りを確認して発進、

みたいにひとつひとつの動作を確認しながら運転しましたよね。

 

でも何回か運転して、ある程度慣れてくると、

誰かとしゃべりながら、

今日の晩ご飯のおかずを考えながら、

鼻歌を歌いながら、

運転できるようになってきますよね。

 

つまり、ひとつひとつの動作を「まとまり」として捉えてるのではなく、

運転すること全体を「まとまり」と捉えることができ、

スムーズに動くことができているからです。

 

これはプログラミングをしているときにもあてはまるので、

まとまりを作る(チャンク化する)とうことがスムーズになればなるほど、

全体的なコーディング能力が高まるんじゃないかと思います。

 

なので、日々コーディングしながら、

「どうやってわかりやすくまとめるか」

ということを

「名前重要」

という視点で取り組むことで、

効率的にレベルアップすることができるんじゃないでしょうか。

 

同じ時間をかけるなら、より成果が高まる方法を取ることで、

一気にレベルアップしていきたいもんですね。

 

なので、

「名前重要」という視点でまとまりを捉える、

ということを意識していきましょう!

-思考, 本棚

Copyright© 独学フリーランスエンジニアの勉強部屋 , 2019 All Rights Reserved Powered by STINGER.