LoginSignup
0
0

More than 5 years have passed since last update.

If ... Then ... End ってどういう風に書いてる??

Posted at

If ... Then ... End ってどういう風に書いてる??

自分は最初に覚えた言語がC言語だったり、その後に覚えたのがPerlだったりしたせいか、
VisualBasic的な If ... Then ... End という書き方に中々馴染めません。

だからやむを得ずVBを書かなきゃいけない時にストレスが溜まってくると、

Thenってなんだよ、たかが条件文の終端に4文字もタイプさせんなよ!!

そもそも IfWhile で条件分の書き方違うって言語仕様がブサイクすぎだろ。
このクソカスがっ!!!

って心の超絶にdisりながらコーディングしてます。
いや、していました。もうそんなことしません。

いや、俺の脳みそがクソカスだって話です。
マジすみませんでした。

でも、ThenってIfの条件文の終端を表しているんだと思いませんでしたか?
僕はそう思っていました。

なぜなら、入門書やネット上で見つかるコードでは大抵は次のように書かれているからです。

IF Selector == NULL Then
    Selector = "hogehoge"
End

自分はこの書き方しか知らなかったので、記号化・視覚化されているIf ( ... ) { ... }の方が分かりやすく可読性が高いと考えていました。

次のコードを見るまでは。

IF Selector == NULL
Then
    Selector = "hogehoge"
End

どこば変わったか分かりますか?

そうです。Then の位置です!

僕はこのコードを見た時に、この言語設計をした人は見やすく分かりやすい言語にしたいという気持を、もの凄く素朴な感覚で表現したらIf ... Then ... Endという形式になったんだろうなっ思いました。

だって、これ、英文そのままじゃないですか!!

例えば実現したいことをまず文章で表すと、

If Selector is null, then set to the default value "hogehoge".

こんな感じの文章になって

論理構造や意味で分けると

If Selector is null, 
then set to the default value "hogehoge"
.

となって、これをプログラムちっくに記号化すれば自然と

IF Selector == NULL
Then
    Selector = "hogehoge"
End

となります。
ほら! さっきのコードと同じ(*´∀`)

さらにさらに、この書き方は文章的に読みやすくなる、という効果も与えます。

どういうことかと言うと、横書きの文章をザッと読むときって、左上から右下に向かって視線が移動しますよね。もう少し正確には、文の先頭部分を拾い読んでいって、視線が細かく移動しながら全体としては左上から右下に向かって流れている、という感じじゃないでしょうか。

読むのがソースコードだったら、それはもう殆ど左上から真下に落ちていく感じで視線が移動するはずです。

つまり、文字を読むときの性質として、文頭の方が文末より読む優先度が高いんだから、重要な言葉を文頭に持ってきた方が素早く意味を把握できるようになるということです。

例えば、ごちゃごちゃしていて分かりにくいコードの内容を急いで把握しないといけなくなったとします。

実際に次のコードをザッと上からなめてみてください。

If 複雑で分かりにくい条件文

Then
    # update table
    .
    .
    .
    (ごちゃごちゃしたコードがつらつらと)
    .
    .
    .
    .
Else If
    # create table

    .
    .
    .
    (こっちもごちゃごちゃしたコード)
    .
    .
    .
    .

End

サンプルコードが思いつかなかったので中身スカスカのサンプルですが(^o^;)
左上から左下に向かって視線が動いて、制御文とかコメントとかがあれば拾い読むという感じだったんじゃないでしょうか。

そして 拾い読んだ文を繋げるとIf ○○ , then update table. Else if create table となり、文章としてスッと頭に入って来ませんでしたか?

コードを置かっけてるつもりが文章を読んでいるような、そんな不思議な感覚になると思います。

今回この記事を書こうと思ったのは、可読性を高める新しい視点を教えてもらったような気がしたからです。

インデントや改行位置など構造的、視覚的に読みやすくする工夫であったり、命名規則であったりはそこら中で語られていると思います。
が、これらは機械的で無味無臭なアプローチとも言えます。

それに対して、今回のように文章的に読みやすくするというアプローチはあまり見かけませんし、VB系以外の言語でもこの発想は役に立つと思います。
それにとっても人間くさくて愛着が湧いてきます(*´∀`)

どうでしょう。
今日からThenの前で改行するスタイルにしてみませんか?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0