Throwing all your data into a big structure and accessing the data there is not protecting your data or making it easier to read or understand your program. When writing access routines the tendancy is to write one big structure to hold everything, that way you only need one access routine to get to all the data. Data should be kept local to the modules using it, and multiple access routines should be written to get to the data in any module. Magic numbers should be avoided no matter what. If you have numbers that are constant, use a constant variable so that thier meaning is obvious.
Magic numbers cause more problems when maintaining programs than thier worth.
Type conversions should be made obvious. AutoLISP will automatically convert an integer value to a float if you are doing math with an integer and a float. The combination of these two things can lead to problems if you assign an integer to a variable you thought was a float. If you divide an integer by a float you get a float. If you divide and integer by an integer you get an integer.