Шаг 5 - Переменные VFP

В VFP поддерживается следующая видимость переменных:

public MyVar1 - глобальная переменная

local MyVar2 - локальная переменная (доступна только в текущей функции)

private MyVar3 - переменная доступна в текущей функции и видна в функциях, вызванных из текущей

Следует отметить следующий недостаток - переменные VFP можно не объявлять и по ходу выполнения функции записывать в одну и ту же переменную различные типы данных: Кроме этого, верхний или нижний регистр не имеют значения.

Но делать так НЕ следует. Никогда НЕ используйте одну и ту же переменную для хранения различных данных. Возьмите себе за правило объявлять переменные в начале функции и следить за их использованием:

*
* function MyFunction
*
public logPblUserAdm, strPblUserName, arrPblSets[10,2]
local intLocCount, strLocName, dtmLocDateTime, arrLocCopySets[10,2]
*
logPblUserAdm = .T.
strPblUserName = "user"
*
arrPblSets[1,1] = "User1"
arrPblSets[1,2] = .F.
arrPblSets[2,1] = "User2"
arrPblSets[2,2] = .T.
*
intLocCount = 0
strLocName = "Наименование"
dtmLocDateTime = gettime()
*
acopy(arrPblSets, arrLocCopySets)
*
return
*

Обратите внимание на имена переменных - вариант на тему венгерской нотации, придуманной программистом Microsoft Чарльзом Симони, венгром по национальности. В имени переменной указываем ее тип (int, log, str, dtm), видимость (Pbl, Loc), а затем смысловое имя.

Массивы VFP могут одновременно иметь различные значения для строк и столбцов. Поэтому, я не указываю тип массива, а пишу arrPblName[ ] или arrLocName[ ].

Префикс переменнойТип переменной VFPПример
StrCharacterStrLocName
IntIntegerIntPblCount
LogLogicalLogPblUserAdm
NumNumericNumLocSum
DtmDateTimeDtmPblDateStart
CurCurrencyCurLocSum
MemMemoMemLocComment
ArrArrayArrPblSelect[100]

Имена полей таблиц удобно начинать с префикса Fld, затем указывать тип и смысловое имя. Имена таблиц я начинаю с префикса T_ , имена баз данных с префикса D_, а имена тэгов индексов с префикса TAG_.

Использую такой, или свой собственный, стиль написания программ Вы сможете избежать многих проблем, связанных с отладкой кода.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Сергей Платонов - 3.02.2000