Reputation:
All my constants are near the top of my javascript file like below.
When I search the core JQuery file, nothing comes up for Constant and I can't see that they are pulling out constants? Do they not have any, do they have them spread out through the code, if so, why don't they consolidate them?
I'm not concerned about the language construct const
but the concept of pulling out your constants into one place like below.
var Constant =
{
VALIDATE_ON: 1,
JSON_ON: 0,
ROOT: '',
PICTURES: '../pictures/',
TEXT: '../text/',
FAVICON: '../images/logo_small.ico',
IMAGES: '../images/',
GATEWAY: 'class.ControlEntry.php',
ENTER_KEY: 13,
SECOND: 1000,
MINUTE: 60,
HOUR: 3600,
DAY: 43200,
AML:
{
"PASS": 0,
"FAIL": 1,
"NOTDEFINED": 2
}
};
Upvotes: 5
Views: 506
Reputation: 2031
This strongly depends on programming style. jQuery has some constants at beggining of jQuery function, but also has a lot of 'constants' as strings scattered through whole file.
Personally I like to keep constants at the end of file.
Anyway it's good to separate and consolidate constants if you will use them in many places (I mean using one constant in many places). But if you will use it once or twice relatively close in your code it's better to put that constant close to its usage - it will be easier to read, because while reading you won't be forced to scroll code top and down.
According to code you provided - you have all constants in one place. IMHO it would be better to separate them in groups e.g.
var Paths = {
ROOT: '',
PICTURES: '../pictures/',
TEXT: '../text/',
FAVICON: '../images/logo_small.ico',
IMAGES: '../images/',
GATEWAY: 'class.ControlEntry.php'
};
var TimeCounts = {
SECOND: 1000,
MINUTE: 60,
HOUR: 3600,
DAY: 43200
};
var KeyCodes = {
ENTER_KEY: 13
};
because when you use it will be more verbose (of course I understand that this is only example code but I want to show you my idea).
Upvotes: 1
Reputation: 1038720
If you look at the jQuery source code you will also see some constants which represent for example different regular expressions at the beginning. It's just that they are not defined in the global scope to avoid polluting it. They are defined inside the jQuery
function. This way there is no risk of conflicts between different scripts that could use the same names in the global scope.
So, of course that it is a good idea to consolidate your constants, just don't pollute the global scope.
Upvotes: 4