[Gambas-user] User Digest, Vol 36, Issue 1
John Rose
john.aaron.rose at mailbox.org
Tue Sep 1 11:18:35 CEST 2020
On 01/09/2020 02:30, user-request at lists.gambas-basic.org wrote:
> On 8/31/20 4:08 AM, John Rose wrote:
>> Thanks Lee for the above. I've implemented the modifications from
>> your diff file. Only problem is "Global variable hidden by local
>> declaration : aEpisodeData" in ExtractEpisodes procedure. I guess
>> that won't make any difference at runtime but it would be nice not to
>> have it. I thought of using the idea (as per hData & hdataLocal in
>> your diff file) of changing the Dim name from aEpisodeData to
>> aEpisodeDataLocal in the procedure (together with its uses in the
>> procedure) but that then causes changes to the definition & use in
>> the SortEpisodeData procedure. Any better ideas to prevent the
>> compilation message?
>
> Ah, yes, another of the issues with globals. It is difficult to change
> individual procedures when they are dependent upon a global structure.
> Keeping data structures, where possible, localized/compartmentalized
> aids modularity and, therefore, debugging and future
> maintenance/enhancement.
>
> The notice is not critical. It merely means that the global variable
> is not accessible from within the subroutine since it is 'shadowed' by
> the local variable.
>
> But if it bothers you (and it probably would me), the simplest way to
> get rid of it would be to revert ExtractEpisodes, from effectively a
> function, back to a procedure (in effective form) that receives no
> argument nor returns any value, but instead works upon the global
> variable. The less simple way is to convert SortEpisodeData into a
> function that receives and returns a String[][] and, of course,
> changing the local variable names eg. to aEpisodeDataLocal.
I've actually changed all my global variables to start with a $ sign
e.g. $asEpisode for an array of strings. Obviously this means that there
is no confusion between global & local variables, as well as not having
to append 'local' to a local name which has the same name as a global
variable. It still allows me to use procedures as 'effectively'
functions (using the Return command).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20200901/10c929de/attachment.htm>
More information about the User
mailing list