5.5 です。

>> 視覚心理学でいう“群化”によって,メソッド名と各引数がそれぞれ
>> カタマリに見えるのも目にやさしいです。

斉藤さん:
> 自分は心理学にまったく詳しくないのですが、その「群化」というのは、
> カッコでは成されないものなのでしょうか?
> 
> 素人目には、「1 + 2 + 3」を「1 + (2 + 3)」とすると、「2 + 3」が「群れている」
> ように感じます。
> あるいは「数式だと『感じ方』より『意味』を探ってしまう」ということであれば、
> 「あいう(えおか)きくけこ」という例でどうでしょう。意味はなくても、「えおか」
> だけ別の固まりに感じられます。

括弧も群化を引き起こすと思います。
群化の要因はいくつもあります。たとえば,日本語を知らない人が
 
 「プログラミングのための言語」

という文字列を見たら,文字の形の特徴の類似性から,自然と

 「プログラミング」「のための」「言語」

の三つのカタマリに見えると思います。似たものがカタマリに見える
ということなので「類同の要因」といいます。

先の例

  puts a*(x1+sin(y1)), b*(x2-cos(y2))

の場合,近いもの同士がカタマリに見える「近接の要因」によって,
メソッド名,第一引数,第二引数の三つに分かれて見えます。
※いまの場合,近いもの同士というのは,スペースで隔てられてい
ない文字同士という意味です。

括弧を省略しない

  puts(a*(x1+sin(y1)), b*(x2-cos(y2)))

の場合,近接の要因によれば,「,」までと「b」以降の二つに分か
れそうですが,これは意味論と一致しません。
実際には括弧がカタマリを作るので,まずはメソッド名と引数群の
二つに分かれて見えるでしょうか。
※括弧が群化を引き起こすのは「閉合の要因」というものにあたる
ようです。
それにしても,引数群のほうがそれ以上きれいに分解されては見え
てこない感じです。
そこで,

  puts( a*(x1+sin(y1)), b*(x2-cos(y2)) )

と書けばだいぶ見やすくなります。再び近接の要因によって,引数
それぞれがきれいにカタマリに見えます。
しかし意味論的には一塊である「puts(」と最後の「)」が視覚的に
は遠く離れてまったく別のカタマリである点が嬉しくありませんね。

(視覚的に)入れ子よりも併置が見やすいという話は,

  join(reverse(sort(array)))  # 架空の言語

よりも,メソッドチェーンを使った

  array.sort.reverse.join  # Ruby

のほうが嬉しかったり,

  array.inject(0, func(r, x){なにか})  # 架空の言語

よりも

  array.inject(0){|r, x| なにか}  # Ruby

のほうが嬉しいということにも関係すると思います。


※群化についてご興味を持たれましたら,「群化の要因」とか「ゲ
シュタルトの法則」でお調べになるとよいと思います。
サイエンス社『視覚心理学への招待』は一章を群化に割いています。

-- 
5.5 / moji.gr.jp