Get Rid of PUBLIC Variables

Well, in my programming techniques, I try very hard to avoid using PUBLIC variables. Then you ask me, how I can manage without using them ?? Avoiding Public variables has one common thing with avoiding smoking/drinking: you need the strong drive !! :)

This time, I tell you my way, I have one function called dPublic() - simulating the similar task with PUBLIC statement, as follows:

// dPublic() Function
#define PUB_NAME   1
#define PUB_VALUE  2
static _dPublic_ := 
function dPublic( cVarName, xNewValue )
  local xOldValue := nil
  local lVarExist := .F.
  local nCounter
  // If cVarName is a string, then proceed
  if valType( cVarName ) == "C"
    cVarName := upper( cVarName )
    // Searching in the Pseudo-Variable List
    for nCounter := 1 to len( _dPublic_ )
      if _dPublic_[ nCounter ][ PUB_NAME ] == cVarName
        // If found, then retrieve the current value into xOldValue
        xOldValue := _dPublic_[ nCounter ][ PUB_VALUE ]
        lVarExist := .T.
        // If there is a new value passed, then assign it
        if pCount() == 2
          _dPublic_[ nCounter ][ PUB_VALUE ] := xNewValue
    // Check if it is a new variable
    if (! lVarExist) .and. pCount() == 2
      aAdd( _dPublic_,  )
return xOldValue

Download now.