By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
458,167 Members | 1,717 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 458,167 IT Pros & Developers. It's quick & easy.

Where is best place to define hard coded values?

P: n/a
If I have many hard coded values such as file paths, file names, timeouts,
etc, where is the best place to define them? Meaning, in the case something
needs changing for example, rather than running down all the subs or
functions that may contain these values, I'd like one place to change them
and have that changed reflected in the subs or functions that use those
values. I'd like to avoid globals; keeping the values private to only those
subs or functions using them.

Thanks,
Brett
Nov 21 '05 #1
Share this Question
Share on Google+
10 Replies


P: n/a
Hi,

I would make a variable that is private to the class or form.
That way all the sub routines and functions can use it. It wont be
accessable out side the form or class.

Ken
-----------
"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
If I have many hard coded values such as file paths, file names, timeouts,
etc, where is the best place to define them? Meaning, in the case something
needs changing for example, rather than running down all the subs or
functions that may contain these values, I'd like one place to change them
and have that changed reflected in the subs or functions that use those
values. I'd like to avoid globals; keeping the values private to only those
subs or functions using them.

Thanks,
Brett

Nov 21 '05 #2

P: n/a
Nice. Thanks.

Brett
"Ken Tucker [MVP]" <vb***@bellsouth.net> wrote in message
news:Op***************@TK2MSFTNGP15.phx.gbl...
Hi,

I would make a variable that is private to the class or form.
That way all the sub routines and functions can use it. It wont be
accessable out side the form or class.

Ken
-----------
"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
If I have many hard coded values such as file paths, file names, timeouts,
etc, where is the best place to define them? Meaning, in the case
something
needs changing for example, rather than running down all the subs or
functions that may contain these values, I'd like one place to change them
and have that changed reflected in the subs or functions that use those
values. I'd like to avoid globals; keeping the values private to only
those
subs or functions using them.

Thanks,
Brett

Nov 21 '05 #3

P: n/a
There will be some shared variables mixed in. Meaning, I'll define
variables in one class that will also be used in other classes or forms.
For those shared variables, should I just create a class that only houses
them? This provides one place to change them and have those changes cascade
through out forms/classes that are using them.

Brett

"Ken Tucker [MVP]" <vb***@bellsouth.net> wrote in message
news:Op***************@TK2MSFTNGP15.phx.gbl...
Hi,

I would make a variable that is private to the class or form.
That way all the sub routines and functions can use it. It wont be
accessable out side the form or class.

Ken
-----------
"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
If I have many hard coded values such as file paths, file names, timeouts,
etc, where is the best place to define them? Meaning, in the case
something
needs changing for example, rather than running down all the subs or
functions that may contain these values, I'd like one place to change them
and have that changed reflected in the subs or functions that use those
values. I'd like to avoid globals; keeping the values private to only
those
subs or functions using them.

Thanks,
Brett

Nov 21 '05 #4

P: n/a

"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
If I have many hard coded values such as file paths, file names, timeouts,
etc, where is the best place to define them? Meaning, in the case something needs changing for example, rather than running down all the subs or
functions that may contain these values, I'd like one place to change them
and have that changed reflected in the subs or functions that use those
values. I'd like to avoid globals; keeping the values private to only those subs or functions using them.

Thanks,
Brett


In situations like this - what do you think of including the file paths,
file names, timeouts, and those hard-code values in a separate text file you
can read at run-time.
The program would not need to be modified when things change - just change
the values in the file.
Nov 21 '05 #5

P: n/a

"Hal Rosser" <hm******@bellsouth.net> wrote in message
news:1D**************@bignews2.bellsouth.net...

"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
If I have many hard coded values such as file paths, file names,
timeouts,
etc, where is the best place to define them? Meaning, in the case

something
needs changing for example, rather than running down all the subs or
functions that may contain these values, I'd like one place to change
them
and have that changed reflected in the subs or functions that use those
values. I'd like to avoid globals; keeping the values private to only

those
subs or functions using them.

Thanks,
Brett


In situations like this - what do you think of including the file paths,
file names, timeouts, and those hard-code values in a separate text file
you
can read at run-time.
The program would not need to be modified when things change - just change
the values in the file.


Is this how it is normally done?

This file would only need to be read the first time the program loads
correct? It will also only be for globals right?

Thanks,
Brett
Nov 21 '05 #6

P: n/a

"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...

"Hal Rosser" <hm******@bellsouth.net> wrote in message
news:1D**************@bignews2.bellsouth.net...

"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
If I have many hard coded values such as file paths, file names,
timeouts,
etc, where is the best place to define them? Meaning, in the case

something
needs changing for example, rather than running down all the subs or
functions that may contain these values, I'd like one place to change
them
and have that changed reflected in the subs or functions that use those
values. I'd like to avoid globals; keeping the values private to only

those
subs or functions using them.

Thanks,
Brett


In situations like this - what do you think of including the file paths,
file names, timeouts, and those hard-code values in a separate text file
you
can read at run-time.
The program would not need to be modified when things change - just change the values in the file.


Is this how it is normally done?

This file would only need to be read the first time the program loads
correct? It will also only be for globals right?

Thanks,
Brett

Can be used for anything that has to be hard-coded.
Some do something like this - for Sales Tax Rate and the like
- If the rate changes - someone can change the rate in the file - and no
re-programming is required for a change in rates.
A separate file for each piece of data is one way to do it -
frinstance a file named "stateTaxRate.dat" can have one entry like ".075".
When the state changes the rate - tell the user to change the file entry to
".085" - or whatever the new rate is.

Nov 21 '05 #7

P: n/a

"Hal Rosser" <hm******@bellsouth.net> wrote in message
news:Uw*****************@bignews6.bellsouth.net...

"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...

"Hal Rosser" <hm******@bellsouth.net> wrote in message
news:1D**************@bignews2.bellsouth.net...
>
> "Brett" <no@spam.net> wrote in message
> news:%2****************@tk2msftngp13.phx.gbl...
>> If I have many hard coded values such as file paths, file names,
>> timeouts,
>> etc, where is the best place to define them? Meaning, in the case
> something
>> needs changing for example, rather than running down all the subs or
>> functions that may contain these values, I'd like one place to change
>> them
>> and have that changed reflected in the subs or functions that use
>> those
>> values. I'd like to avoid globals; keeping the values private to only
> those
>> subs or functions using them.
>>
>> Thanks,
>> Brett
>>
>>
>
> In situations like this - what do you think of including the file
> paths,
> file names, timeouts, and those hard-code values in a separate text
> file
> you
> can read at run-time.
> The program would not need to be modified when things change - just change > the values in the file.


Is this how it is normally done?

This file would only need to be read the first time the program loads
correct? It will also only be for globals right?

Thanks,
Brett

Can be used for anything that has to be hard-coded.
Some do something like this - for Sales Tax Rate and the like
- If the rate changes - someone can change the rate in the file - and no
re-programming is required for a change in rates.
A separate file for each piece of data is one way to do it -
frinstance a file named "stateTaxRate.dat" can have one entry like ".075".
When the state changes the rate - tell the user to change the file entry
to
".085" - or whatever the new rate is.

I see. I suppose you could build that into the interface for the user to
make changes as well right?

Using the text files for many variables, will that be a bunch of parsing -
instr(), mid(), perhaps regular expressions and the like in other words?
They just don't seem like the most efficient method. I guess they could be
seperated by chr(13) & chr(10).

Would an XML file work better?

Thanks,
Brett
Nov 21 '05 #8

P: n/a
Options may be: XML Resource File, Small DataBase, Serialized Class, etc.

"Brett" wrote:

"Hal Rosser" <hm******@bellsouth.net> wrote in message
news:Uw*****************@bignews6.bellsouth.net...

"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...

"Hal Rosser" <hm******@bellsouth.net> wrote in message
news:1D**************@bignews2.bellsouth.net...
>
> "Brett" <no@spam.net> wrote in message
> news:%2****************@tk2msftngp13.phx.gbl...
>> If I have many hard coded values such as file paths, file names,
>> timeouts,
>> etc, where is the best place to define them? Meaning, in the case
> something
>> needs changing for example, rather than running down all the subs or
>> functions that may contain these values, I'd like one place to change
>> them
>> and have that changed reflected in the subs or functions that use
>> those
>> values. I'd like to avoid globals; keeping the values private to only
> those
>> subs or functions using them.
>>
>> Thanks,
>> Brett
>>
>>
>
> In situations like this - what do you think of including the file
> paths,
> file names, timeouts, and those hard-code values in a separate text
> file
> you
> can read at run-time.
> The program would not need to be modified when things change - just

change
> the values in the file.

Is this how it is normally done?

This file would only need to be read the first time the program loads
correct? It will also only be for globals right?

Thanks,
Brett

Can be used for anything that has to be hard-coded.
Some do something like this - for Sales Tax Rate and the like
- If the rate changes - someone can change the rate in the file - and no
re-programming is required for a change in rates.
A separate file for each piece of data is one way to do it -
frinstance a file named "stateTaxRate.dat" can have one entry like ".075".
When the state changes the rate - tell the user to change the file entry
to
".085" - or whatever the new rate is.

I see. I suppose you could build that into the interface for the user to
make changes as well right?

Using the text files for many variables, will that be a bunch of parsing -
instr(), mid(), perhaps regular expressions and the like in other words?
They just don't seem like the most efficient method. I guess they could be
seperated by chr(13) & chr(10).

Would an XML file work better?

Thanks,
Brett

Nov 21 '05 #9

P: n/a
I'm surprised no-one here has mentioned App.config yet (or did I miss it?)

Right click on your project in the solution explorer and choose to add a new
item. From the list of items that you can add to the project, scroll down
and find the one called ApplicationConfiguration File. Select it, call it
app.config and click Open to add it to the file.

In the file you just added, drop in an <appSettings> section and in that add
your values, like this
<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<appSettings>

<add key="DirectoryName" value="c:\test"/>

</appSettings>

</configuration>

Here I've addded in a single entry called DirectoryName, with a value of
"c:\test"

Now, to get at that, and obviously the whole mass of other values you want
to store, just go ahead and create a class with some shared properties on
it, like this.

Imports System.Configuration

Public Class AppSettings

Public Shared ReadOnly Property DirectoryName() As String

Get

Return ConfigurationSettings.AppSettings("DirectoryName")

End Get

End Property

End Class

If I ever want to pull a value out of that app.settings file now I just call
AppSettings.whateverpropertyyoucoded up

Hope that helps,
--
Pete Wright
Author of ADO.NET Novice to Pro for Apress
www.petewright.org

"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
If I have many hard coded values such as file paths, file names, timeouts,
etc, where is the best place to define them? Meaning, in the case
something needs changing for example, rather than running down all the
subs or functions that may contain these values, I'd like one place to
change them and have that changed reflected in the subs or functions that
use those values. I'd like to avoid globals; keeping the values private
to only those subs or functions using them.

Thanks,
Brett

Nov 21 '05 #10

P: n/a
Pete,
Depending on the nature of the (original) coded values, I would consider
creating custom a configuration section in the app.config rather then
directly in appSettings, as this allows better encapsulation of the coded
values...

Create a custom configuration section via configSections and implementing
the System.Configuration.IConfigurationSectionHandler. I would pattern the
custom section handler after DictionarySectionHandler (support: add, remove,
clear) or use a class derived from DictionarySectionHandler...

<navigation>
<add form="Form 1" type="namespace.form1, assembly" />
<add form="Form 2" type="namespace.form2, assembly" />
</navigation>

Then within your code you can use ConfigurationSettings.GetConfig to return
the above section of the app.config. Depending on what you do in your
IConfigurationSectionHandler.Create method (I would create a HashTable) will
decide what GetConfig returns.

See the following on how to create new sections via the configSections
section.

http://msdn.microsoft.com/library/de...onhandlers.asp

and:
http://msdn.microsoft.com/library/de...ionsschema.asp

Also read about the System.Configuration.ConfigurationSettings class and
other classes in the System.Configuration namespace.
Hope this helps
Jay

"Pete Wright" <pe**********@gmail.com> wrote in message
news:%2****************@TK2MSFTNGP14.phx.gbl...
I'm surprised no-one here has mentioned App.config yet (or did I miss it?)

Right click on your project in the solution explorer and choose to add a
new item. From the list of items that you can add to the project, scroll
down and find the one called ApplicationConfiguration File. Select it,
call it app.config and click Open to add it to the file.

In the file you just added, drop in an <appSettings> section and in that
add your values, like this
<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<appSettings>

<add key="DirectoryName" value="c:\test"/>

</appSettings>

</configuration>

Here I've addded in a single entry called DirectoryName, with a value of
"c:\test"

Now, to get at that, and obviously the whole mass of other values you want
to store, just go ahead and create a class with some shared properties on
it, like this.

Imports System.Configuration

Public Class AppSettings

Public Shared ReadOnly Property DirectoryName() As String

Get

Return ConfigurationSettings.AppSettings("DirectoryName")

End Get

End Property

End Class

If I ever want to pull a value out of that app.settings file now I just
call AppSettings.whateverpropertyyoucoded up

Hope that helps,
--
Pete Wright
Author of ADO.NET Novice to Pro for Apress
www.petewright.org

"Brett" <no@spam.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
If I have many hard coded values such as file paths, file names,
timeouts, etc, where is the best place to define them? Meaning, in the
case something needs changing for example, rather than running down all
the subs or functions that may contain these values, I'd like one place
to change them and have that changed reflected in the subs or functions
that use those values. I'd like to avoid globals; keeping the values
private to only those subs or functions using them.

Thanks,
Brett


Nov 21 '05 #11

This discussion thread is closed

Replies have been disabled for this discussion.