John W. Colby
jwcolby at colbyconsulting.com
Tue May 17 17:51:00 CDT 2005
Uh, yep. John W. Colby www.ColbyConsulting.com Contribute your unused CPU cycles to a good cause: http://folding.stanford.edu/ -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Charlotte Foust Sent: Tuesday, May 17, 2005 4:34 PM To: Access Developers discussion and problem solving Subject: RE: [AccessD] Global Variable Give it up, John. When Drew decides no one elses arguments make any sense, there's no reasoning with him. ;-> Charlotte Foust -----Original Message----- From: John W. Colby [mailto:jwcolby at colbyconsulting.com] Sent: Tuesday, May 17, 2005 1:06 PM To: 'Access Developers discussion and problem solving' Subject: RE: [AccessD] Global Variable ROTFL. John W. Colby www.ColbyConsulting.com Contribute your unused CPU cycles to a good cause: http://folding.stanford.edu/ -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of DWUTKA at marlow.com Sent: Tuesday, May 17, 2005 3:58 PM To: accessd at databaseadvisors.com Subject: RE: [AccessD] Global Variable You have said that using Globals is bad practice, which it is not. That is my argument. The misuse is. 'Getting carried away with'...well, that's an iffy statement, because you have to judge what is 'getting carried away with' and what is not. Drew -----Original Message----- From: John W. Colby [mailto:jwcolby at colbyconsulting.com] Sent: Tuesday, May 17, 2005 2:02 PM To: 'Access Developers discussion and problem solving' Subject: RE: [AccessD] Global Variable Would "getting carried away with globals" be considered misuse of globals? If you look back to the first post you see that is what I warned against. Notice I did NOT tell him that in his particular case he should not use a global. YOU have built an argument for your own amusement, but in the end it has enabled us to discuss the issue which is a good thing. John W. Colby www.ColbyConsulting.com Contribute your unused CPU cycles to a good cause: http://folding.stanford.edu/ -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of DWUTKA at marlow.com Sent: Tuesday, May 17, 2005 2:40 PM To: accessd at databaseadvisors.com Subject: RE: [AccessD] Global Variable Ah. There's the issue. 'If a global doesn't need to be SET by project wide code'. Okay. Now, that I will back down on. I personally don't have an issue with setting it one place, and using it other places. No problem there. But what if you are constantly using (reading and writing) it from many places in your project. Does a Global Variable fit the model? Of course! Honestly, I use classes too, and will make read only properties 'read only'. Drew P.S.-- Still doesn't make Globals bad practice, only misuse of globals...which is still my position. -----Original Message----- From: John W. Colby [mailto:jwcolby at colbyconsulting.com] Sent: Tuesday, May 17, 2005 11:52 AM To: 'Access Developers discussion and problem solving' Subject: RE: [AccessD] Global Variable I understand completely Drew. In order to not use globals you have to THINK and you are too busy typing to do that. Correct me if I am wrong, but nowhere did I advocate any code like you mentioned. Can you show me where in my email I advocated that? What I said was that if a global doesn't need to be SET by project wide code then it doesn't need to be global. I have seen in your previous posts where you mention saving keystrokes. Understand that I am NOT a data entry person. My job is to design well engineered systems. If that means more keystrokes, so be it. John W. Colby www.ColbyConsulting.com Contribute your unused CPU cycles to a good cause: http://folding.stanford.edu/ -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of DWUTKA at marlow.com Sent: Tuesday, May 17, 2005 11:32 AM To: accessd at databaseadvisors.com Subject: RE: [AccessD] Global Variable Tighter? If I looked at code like this: Dim MyModuleLevelString as String Private Function SetModuleLevelString(strValueToSet As String) MyModuleLevelString=strValueToSet End Function I would think the developer was getting paid by the key stroke.....not that it was 'tight code'. Drew -----Original Message----- From: John W. Colby [mailto:jwcolby at colbyconsulting.com] Sent: Tuesday, May 17, 2005 6:59 AM To: 'Access Developers discussion and problem solving' Subject: RE: [AccessD] Global Variable Gustav, This is nothing new, and not something I take credit for figuring out. It is not uncommon when you work with classes to have methods set the values of and return the values from class properties. In fact with classes you have syntax constructs specifically for this - property get/set/let. You can, if you wish, dim a variable public in the class header and then it is just read / write to anyone with a pointer to the class. Or you use a property get and or set/let in whatever combination you need. A read-only value has only a property get. A Write-only has only a property set (not very common) and a read / write has a property get and property let/set. The objective is simply to control how the variable is read/written. Since the variable is dimensioned private to the module (or class), only a function in the module or class can set the value, and only a function in the module or class can return the value. To make a property "read only", create only a function that returns the value, but do not build a function that sets the value. Then only the class or module itself can set the variable. For example as the module initializes, perhaps some value is pulled from a table and written into the variable. Then a function returns the value to any process that needs the value. Or perhaps the value is calculated by some math transformation using other values in other variables. The other variables are set by processes, but in order to read out the value, a function either returns the variable directly or returns the value of the mathematical transformation using the values in the other variables. This is not new stuff, I did not invent it, but it is commonly used to "replace" global variables such that the CONCEPT of a global variable exists (can be seen from anywhere) but still protects the variable from being written when it shouldn't be or by processes that should not be able to write to the variable. And yes, it is more work. It is just one of those things that you do or your don't. If you accept the practice, then you start thinking about protecting variables, using variable scope, and using functions to set / return values where appropriate. It becomes habit and your code becomes a little bit tighter. John W. Colby www.ColbyConsulting.com Contribute your unused CPU cycles to a good cause: http://folding.stanford.edu/ -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock Sent: Tuesday, May 17, 2005 6:30 AM To: accessd at databaseadvisors.com Subject: RE: [AccessD] Global Variable Hi John Well, here we have full control on where functions put their nasty fingers. I haven't managed yet to build self generating code; to some this would indicate a brave new world, to some it would be a nightmare - functions creeping around and attacking our globals and eating our children... gosh. But worse, they would soon learn how to take advantage of your functions to change those "private variables"! Be prepared. /gustav >>> jwcolby at colbyconsulting.com 05/16 10:58 pm >>> .. Making this a global allows functions that have no business setting these variables to change them. By having a private variable returned by a public function, any function that needs the information can get it but cannot modify it. -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com