result = a = bで書けます 追記: result = (a = b)のほうがいいみたいです
If a = b Then result = True Else result = False End If
使い方ヒント: 「これは臭う」という行を見付けたら、各行のをクリックしてマーキングしておきましょう(要Twitter OAuth認証)
うーん。こうやって短くしようとしたがる人いるけど、、実際には、「条件判定と、それによる処理とは別もの」っていう意味では、気持ち悪いな。
根本的に if文がbool値で判定してることをわかってない人がよくやるコードです。
result=a=bなんてやめてくれw
result = a = bのほうが微妙な感じだなー。代入演算子と比較演算子に区別が無いので見た目わかりにくいなーと。短く書けばいいという物でも。
「出来ること」と「やっていいこと」は違う。これは元ソースのままでいい
「出来ること」と「やっていいこと」は違う。これは元ソースのままでいい
いっそのこと関数とかを使って、result = Equal( a, b )
と書くのがスマートかなと思った。VBAは知らないけれど・・
Cの条件演算子?:みたいなIIF関数使ってresult = IIf(a = b, True, False)とも書けますね。これはこれでウンコードのような気がしますが。
このままでよいとおもいます。 どうしても短くしたい場合
result = False
If a = b Then
result = True
End If
Fushiharaさんに一票。 元ソースは冗長すぎるし、result = a = b は違和感が強い。
私もresult = (a = b) のほうがいいかな。VBAに慣れていても a = b = c は違和感感じます。 Set構文などあるので、一番左の=が特別なのは体感的にあるにはありますけどね。
変数名がもう少し意味のある名前なら IF 文書かなくてもでもいいんじゃないかな。 notchanged = ( old = new ) みたいな。
これはVBAの仕様がうんこなんじゃないの?
そもそもresult 自体が不要ではないでしょうか… 利用箇所に直接条件文を書き下せばいいような
全体が見えないので推測になってしまいますが
自分に限った話だけど、VBAのFunctionで値を返す際の
Function hogehoge() As Long If 条件 Then hogehoge = 何某 Else hogehoge = 何某 End If End Function
↑みたいな記法(Function名と同名の変数に値を代入する)に妙な違和感を感じてしまうため、 resultという名称で変数を定義しといて、
Function hogehoge() As Long Dim result as Long If 条件 Then result = 何某 Else result = 何某 End If hogehoge = result End Function
と書くようにしてる。冗長なんだけどね。。
うーん。こぅするかな。
Function hogehoge() As Boolean
Dim result As Boolean
result = 条件
If result Then
' 副作用
End If
hogehoge = result
End Function
やり方いろいろあるだろうけど・・・うんこではないと思う
冗長だとは思うけれどソースとしてはある意味美しいかと。まあ、パフォーマンスを考えるとインタープリタ型のVBAでやる事ではないけどね。
Boolean datatypeで結果を出力するんだからIF文でやるのは基本なんだけれどスマートじゃないかもFushiharaさんのがスマート
コメント投稿には、twitter認証が必要です。
Twitter認証
他の言語やってると
result = a = b
の方が気持ち悪いのでは…?(VBA知らないけど