トップページ > プログラム > 2014年11月06日 > XF7GoSal

書き込み順位&時間帯一覧

14 位/238 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000010000101010004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
■長くなるので興味が無い人は読み飛ばしてくれ
Excel VBA 質問スレ Part35

書き込みレス一覧

Excel VBA 質問スレ Part35
14 :デフォルトの名無しさん[sage]:2014/11/06(木) 11:16:31.34 ID:XF7GoSal
普通はLong型(Long Integer型)に型プレフィックス付ける場合はi(アイ)だからね
その先入観で見ると、エルの小文字ではなく、アイの大文字と勘違しやすいのかも
Excel VBA 質問スレ Part35
22 :■長くなるので興味が無い人は読み飛ばしてくれ[sage]:2014/11/06(木) 16:54:20.74 ID:XF7GoSal
>>15
その二つを変数名で区別する必要性が実は無いんだよ

Integer型とLong型の特性を見ると

・Integer型:-32768 〜 32767、メモリ消費2Byte、処理が遅い(処理単位の関係で変換が必要なため)
・Long型:-2147483648 〜 2147483647、メモリ消費2Byte、処理が速い

となるので、Integer型にはメモリ消費が少ないってメリットしか無く、しかもそのメモリ消費も、
i(1000000)とかの超多要素配列でやっと約2MBの差なので、昨今のPCでは、メモリ消費量を気にしなければ
ならない程の要素数の配列を使うのはレアケースであり、それを踏まえるとInteger型の出番は

・自分で弄れないライブラリとかの関数で、引数がInteger型の参照渡しでそれに合わせる必要がある場合
・超多要素配列

の2つだけとなり、それ以外はIntegerで足りる範囲でもLong型を使うのが正解となるが
前者は相手関数合わせが必須で選択の余地がないから、変数名でIntかLongかを把握できるようにしておくとか関係なく
後者の「超多要素配列」ってのも、変数名で区別できるようにするまでもなく明らかに把握できるものなので
そうなると整数型の16bitと32bitの区別を変数名で出来るようにしておいても煩雑になるだけで"百害有って一利無し"

今後、他の言語を使うことも考えたら、「int〜=16bit、lng〜=32bit」って区別できるようにしているなら、VB.NETでは
Dim intA As Short ' .NETでは16bit符号付整数はInteger型ではなくShort型
Dim lngA As Integer ' .NETでは32bit符号付整数はLong型ではなくInteger型
ってするのか?

それとも「int〜=VBA・VB6では16bit、VB.NETでは32bit、lng〜=VBA・VB6では32bit、VB.NETでは64bit」
なんて、ややこしいルールで区別するの?

VBAの中だけなら、「煩雑になるだけで"百害有って一利無し"」と言っても、利が無いから避けた方が良いだけで
害がそんなに大きい訳じゃないが、今後他の言語を使うようになると、その煩雑さは大きくなる
そもそも、VB.NETがIntegerやLongのサイズを、VBAやVB6に合わせなかったのも、これを変数名で区別する必要がないと
一般的に認識されているからなので、整数型は長か短かまで区別せずに、整数を意味するintかiで統一した方が良い
Excel VBA 質問スレ Part35
29 :デフォルトの名無しさん[sage]:2014/11/06(木) 18:13:59.10 ID:XF7GoSal
>>23
型の使い分けと、変数名で型名を識別する必要性は同一ではないが関連性があり
VBAでは、正しい型の使い分けが出来ていると、少なくとも整数型において
変数名で型名を識別する必要性が無くなるってことなんだけど、ちょっと難しいかな?

正しい型の使い分けが出来ていると、単一の変数における

整数型 = 整数型

において

Integer型 = Long型

が発生するのは、その代入されるInteger型変数が、
Integer型で渡す必要がある外部関数の引数の場合のみなわけだが、
もしこれでオーバーフローするなら、そもそもInteger型でしか引数を受けられない
その外部関数には渡せないので、Integer型とLong型を区別できるようにしておいて、
Long型からの代入だからInteger型ではなくLong型を使おうとしても、
結局Long型は使えないってことになり、識別出来るようにしていても効果を生まない

仮定での話なら、識別できないとこういう不都合があるって仮説を挙げられるが
実プログラムに置いては、その仮説の前提自体に問題があって、その仮説が成り立つ状況は
識別云々以前の部分に問題が無い限り発生しないのだよ



因みに俺は元システムハンガリアン派、現アプリケーションハンガリアン派です
ハンガリアン以外にも色々あることは知っているが、ハンガリアンからは離れられない...orz
Excel VBA 質問スレ Part35
31 :デフォルトの名無しさん[sage]:2014/11/06(木) 20:05:02.68 ID:XF7GoSal
俺はプラグマティスト(実用主義、実際主義)だからね

利点のない使い方における必要性とかは、検討するだけ無駄で
利点のある使い方においての効果を第一に考えた方が良いと思ってる

なので、利点のない使い方でも、それを実行することが不可能では無い以上
利点のない使い方における効果も重要だというなら、話にならんというか
話は合わんわな

変数名で型を区別できる必要は、型を使い分ける必要があってこそ必要になってくるもので
型を使い分ける必要が無いのに、変数名で型を区別できるようにしたところで
弊害しか生まないという「実際の実用上の現実」に沿って判断するのが俺の主義なので


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。