Je regardais les scripts statiques de Twitter et j'ai remarqué que toutes les variables et fonctions ne comportaient qu'un seul caractère, pourquoi et comment font-ils cela? Cela a-t-il quelque chose à voir avec la performance? Si oui, pourquoi ne donnent-ils pas à tous les éléments sur leur site web ce genre de noms courts, peut-être 2 caractères au lieu de 1 pour éviter toute collision.Noms à une lettre pour les variables et les fonctions dans jQuery, JavaScript
Exemple:
(function (A) {
A.fn.isScreenNameField = function() {
return this.each(function() {
var M = A(this);
var F = A("#signup_username_url");
var E = A("#screen_name_info");
var D = A("#avail_screenname_check_indicator");
var O;
var C;
var I;
var N = M.val();
var G = N;
var H = N != "";
var Q = /[a-zA-Z0-9_]/;
function K() {
if (H) {
F.html(M.val())
}
}
function L() {
M.trigger("show-info");
E.hide();
D.show()
}
function B() {
E.show();
D.hide()
}
function P() {
G = O;
jQuery.ajax({
type: "GET",
url: "https://stackoverflow.com/users/username_available",
data: {
username: O
},
dataType: "json",
success: function (R) {
if (C) {
var S = R.msg;
if (R.valid) {
M.trigger("is-valid");
F.removeClass("invalid").addClass("valid")
} else {
M.trigger("is-invalid", R.msg);
F.addClass("invalid").removeClass("valid")
}
}
},
beforeSend: null,
complete: function() {
clearTimeout(twttr.timeouts.availabilityTimeout);
B()
}
})
}
function J(R) {
O = M.val();
clearTimeout(twttr.timeouts.availabilityTimeout);
C = O.match(Q);
if (!C) {
G = O;
B();
return
}
if (O == G) {
return
}
L();
twttr.timeouts.availabilityTimeout = setTimeout(P, 2000)
}
M.isSignupFormField({
validateWith: function (R) {
if (isBlank(R)) {
return _("Please enter a user name")
} else {
P()
}
},
allowInput: Q
});
M.keyup(function (R) {
if (jQuery.inArray(R.keyCode, [16, 17, 18, 20, 27, 33, 34, 35, 37, 38, 39, 40, 144]) == -1) {
if (M.val() != "") {
H = true
} else {
M.trigger("show-info")
}
K();
J()
}
});
M.bind("value-changed", P);
M.bind("custom-validate", P)
})P
}
})
Je pense que Crockford appelle cette technique particulière "obfuscation". JSMin ne modifie pas les noms de variables parce que Crockford n'aime pas l'obscurcissement car il le juge trop susceptible de causer des bugs – Bob
Bon point. [YUI Compressor] (http://developer.yahoo.com/yui/compressor/) minimise et "obfuse". – kevingessner