你们是喜欢把所有变量全部定义在函数开始处,
还是在最近用到的地方定义呢?哪种更清晰美观?

解决方案 »

  1.   

    我是这样的习惯:Function BytesGetSumMap(ByRef pBytes() As Bytes) As Long()
      Dim tOutLongs() As Long '函数全局部分。这里是输出变量  ReDim tOutLongs(0 To 255)  Dim tBytes_Start As Long '参数处理部分。
      Dim tBytes_End As Long '参数处理部分。  tBytes_Start = LBound(pBytes())
      tBytes_End = UBound(pBytes())  Dim tIndex As Long '循环预备部分。循环内部不能重复定义,所以要在循环开头定义循环内部的所有变量。
      Dim tIndex_Start As Long
      Dim tIndex_End As Long  tIndex_Start = tBytes_Start '虽然tIndex_Start=tBytes_Start,但tIndex_Start就是tIndex_Start,在正式的程序里保留这个写法,临时的草稿可以不这么麻烦。
      tIndex_End = tBytes_End  Dim tByte As Byte  For tIndex = tIndex_Start To tIndex_End
        tByte = pBytes(tIndex)
        tOutLongs(tByte) = tOutLongs(tByte) + 1
      Next  BytesGetSumMap = tOutLongs()
    End Function
      

  2.   

    上面的函数是计算一个Byte数组中,0-255这256个值出现的频率,有很多的用途。用途之一就是计算一个RGB位图某一平面的亮度直方图,在图象处理中是一个重要的信息。
      

  3.   

    我先规划程序,然后把要用到的变量都写出来,然后再定义变量
    有时为了节省内存,我会反复思考怎样编写可以节省变量,这样可以提高效率,
    变量都是放到函数开始处的,并有注释
    不过也有提倡就近定义变量的
    有时不好,比如在Select case中,容易犯重复定义的错误!
      

  4.   

    //因为这样效率更高~~
    //用到的时候才定义~~~那倒不一定,因为所有局部变量所占用的(堆栈)内存都是在函数一开始时分配的(sub esp, ??h)
    脚本语言(VBScript, JScript)的函数也是这样的,所有局部变量在函数一开始时分配。