その3 横に長いのもイヤだし変数は近く使う。 <プログラミング再入門>

縦に長いのもイヤだけど、横に長いのも避けたい。
これカッコイイと勘違いされる向きもあるけど、感心しない。
そういう風に考え変わったのも途中から。
 
メソッドがオブジェクト呼び出し、さらにそのメソッド使うとき、
objA.methodA.methodB
って、

Dim objB As ObjB = objA.methodA
objB.methodB
って書かなくても、省略できるし、その方が簡潔なことはよくある。
そして、いくらでも数珠つなぎに出来る。

それ別に美徳じゃねえよ。
全部逐一変数に入れるのは、もちろんカッタルイけど、
適当なところで、横の長さも切るべきだ。
 
呼んだオブジェクトが無く、例外発生すると追いにくい。
ちなみに、坂本先生のRubyでも、そこ勘違いしてんじゃねえかなぁ。
ってフシはある。
 
 
目安は、2回出てくるなら数珠つなぎ2回書くのやめる。
objA.methodA.methodB.methodC
objA.methodA.methodB.methodD
って、羅列するなら、

Dim objC As ObjC = objA.methodA.methodB
Debug.Print( objC ….)
objC.methodC
objC.methodD

とか。
何かデバッグ出力も挟んどく。
自分で確認するときラクだし。
 
VBの場合は、インデント増えるけど、
Withっていう機能があるので、
そっち使って汚くない場合は、そっち使うこともあります。
 
まあ、数珠つなぎの羅列が沢山出てくるのは、
見てて気持のいいものではないです。
 
 
ああ、思い出した、それと、
あるコーディング規約で、(VBじゃないけど)

funcA( a == true );
じゃなくて、
funcA(a);
って必ず書けとあった、
うーん、普通は何も考えなければ後者で書くけど、

funcA(!a);
は、
funcA( a == false );
に比べて、そんなに優れてるのか、

a == true が冗長だから、って理由だけで、その規約決めたなら、
ちょっと賛成しかねるな。

いや、何も考えなければ funcA(a); って書くけど、
一周して、funcA( xxx.yyy.zzz == false );
って、敢えて書くことはあるよ。

そういえば、規約の方が無神経って思うこともあった。
 
 
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。

  
 

社会・経済ニュース ブログランキングへ

にほんブログ村 海外生活ブログへ
にほんブログ村

カテゴリー: 2017, プログラミング タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*