Цитата |
---|
Neufazendnik написал: Наверное, нужно определиться, что Вы хотите донести? |
Наверное, нужно не вырывать фразы из контекста и смотреть кому они адресованы. Конкретно моё сообщение #59 недвусмысленно является ответом на Ваше сообщение #58, а не продолжением дискуссии с Jack Famous (каковой, к слову, не было).
И да, Вы не разобрались в сути нашего диалога, если пишете:
Цитата |
---|
Neufazendnik написал: предлагая собственно то, чему изначально стали оппонировать. |
Поскольку изначально я "оппонировал" (и буду оппонировать, если потребуется) использованию избыточных, режущих глаз префиксов в именах локальных переменных внутри одной процедуры (или функции).
А предложил я нечто прямо противоположное: выделять другим синтаксисом только переменные более высоких областей видимости, чем локальная.
Лучше совсем без префиксов. Например, регистром символов.
Проиллюстрирую простым примером по сохранению массива с таблицей умножения в переменную глобальной области видимости
Сравните, какой код лучше читается (и пишется):
Вариант 1 (без лишней информации):
Скрытый текст |
---|
Код |
---|
Public ARR As Variant
Public VAR1 As Integer
Public VAR2 As Integer
Public Sub SetAllGlobals(val1, val2)
VAR1 = val1
VAR2 = val2
Dim arr() As Integer
ReDim arr(0 To val1, 0 To val2)
For i = 0 To UBound(arr)
For j = 0 To UBound(arr, 2)
arr(i, j) = i * j
Next j
Next i
ARR = arr
End Sub
|
|
Вариант 2 (с префиксами, указывающими на область использования):
Скрытый текст |
---|
Код |
---|
Public G_arr As Variant
Public G_var1 As Integer
Public G_var2 As Integer
Public Sub G_SetAllGlobals(SAG_val1, SAG_val2)
G_var1 = SAG_val1
G_var2 = SAG_val2
Dim SAG_arr() As Integer
ReDim SAG_arr(0 To SAG_val1, 0 To SAG_val2)
For SAG_i = 0 To UBound(SAG_arr)
For SAG_j = 0 To UBound(SAG_arr, 2)
SAG_arr(SAG_i, SAG_j) = SAG_i * SAG_j
Next SAG_j
Next SAG_i
G_arr = SAG_arr
End Sub
|
|