わかりやすくソースを書くには?

解決


うい  2007-11-25 09:55:59  No: 138191

現在、以下のようなソースを書いています。
環境はVB6です。
    Dim varText As Variant
    Dim iCount As Integer
    Dim i As Integer
    Dim str(10) As String
    
    i = 0
    For iCount = 1 To 10
        'スプレッドより情報を取得する
        spd.GetText 1, iCount, varText
        str(i) = Cstr(CInt(varText) * 100)
        i = i + 1
    Next
    
このソースを書くときにスプレッドの1行目をしゅとくすると
それを配列の0行目に入れています。
スプレッドの行数を取るほうをiCount,配列の行数を取るほうをiにしています。
iCountとiの関係はi=iCount-1なので変数iを
わざわざ作らずに一つの変数で済ませたほうがわかりやすいのでしょうか。
作った本人の主観が入ってしまって他の方が見たときにどちらがわかりやすいのかわかりません。
ソースの変更に対応できるという意味でも変数を分けたほうがいいのでしょうか。

以上、よろしくお願いします。


通ってみた  2007-11-26 00:22:56  No: 138192

個人的にはせっかくのForループでi変数をインクリメントするのは見た感じ微妙だと思います

私ならiCountを使わず、For i=0 to …にして、iCountの部分をi + 1にしますね


魔界の仮面弁士  2007-11-26 00:28:28  No: 138193

> それを配列の0行目に入れています。
コーディングスタイルは千差万別ですが、このような場合、
  a) 添字用の変数は用意せず、行数 - 1 として利用する。
  b) 「添字変数 = 行数 - 1」として変数を用意する。
  c) 配列 0〜10 の 0 を未使用とし、1 から利用する。
  d) 配列を 1〜10 として宣言する。
など、幾つかの方法がありますね。

> 一つの変数で済ませたほうがわかりやすいのでしょうか。
変数のことを言うならば、そもそも、現在の変数名が良くないと思いますよ。

Count だと 個数や件数といったものをイメージしてしまいますし、
i という一文字変数ではその意味を想像できず、コードを追わねばなりませんし、
str() に至っては、VB6 標準の Str 関数と名前が被ってしまっています。

第一、「Dim str(10) As String」では、0〜11 の 11 個の要素が定義されますので、
「For iCount = 1 To 10」という、1〜10 という 10 個のデータと一致しません。

で、スプレッドを持っていないので、.GetText の仕様がよくわかりませんが、
  .GetText 列番号, 行番号, 取得用変数
という仕様になっているなら、たとえば、ここに指定する変数は、
i や iCount ではなく、RowIndex とか intGyoNum といった
「行」を表す変数名にしておいた方が、分かりやすくなるかと思います。

変数名に一定のルールがあるならば、ループカウンタを直接 -1 しようと、
管理用の変数を別途設けようと、理解の妨げにはならないと思います。


うい  2007-11-26 02:03:12  No: 138194

レスありがとうございます。

なるべく多数の方が読みやすいといってくれる方法をつかって
書きたいと思っても
普段は他の方がソースを読んでどう思ってるのか、知る機会がないので
とても勉強になりました。

ありがとうございます。

今後は変数名に気を使って書いてみようと思います。


うい  2007-11-26 02:03:30  No: 138195

解決を忘れておりました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加