5 ms·
While it's a good idea, I feel like it should rename with real words, or not rename at all. From the example: function(bedad, latay, vublu) { if
by shawabawa3 13y ago
While it's a good idea, I feel like it should rename with real words, or not rename at all. From the example:
function(bedad, latay, vublu) {
if (!adag(this, "on", bedad, [ latay, vublu ]) || !latay) return this;
this._events || (this._events = {});
var cyem = this._events[bedad] || (this._events[bedad] = []);
bedad, latay and vublu don't make it much easier to remember which variable is which than just using a,b,c
- zertosh 13y agoI'm the author. Since "a", "b", "c" get recycled by different scopes, it makes it really hard to figure out which "a" you're looking that. By having unique names, you can easily spot where one variable is used exclusively. I was going to use a dictionary but I didn't want the tool to be language specific or run into unsavory words.
- nathan_long 13y ago>> I didn't want the tool to be language specific or run into unsavory words Good thoughts. However, "beedip" is foreign to everyone, whereas if you pick a language, it's at least native to some people. Also, you could have maybe 50 known inoffensive words; there probably aren't more than that many unique variables in a scope. Things like "hat" and "bread".
- billyhoffman 13y agoWhy don't you prefix variables based on their usage in the code? function(a,b,c) -> function(arg1_cat, arg2_tree, arg3_carrot) for(i=0; i< 10; i++) -> for(counter1=0; counter1 < 10; counter1++) var a -> var global_pants; You could do this reasonably well with regular expressions/find+replace. To be more sophisticated you would use a a tokenizer/parser and rename based on the identifiers location in the AST nodes. I did something similar a few years ago for a commercial product that included a JavaScript beautifier and our customers loved it.
- joshklein 13y agoOr perhaps a consistent "namespace", e.g. with a standard prefix prepended to a simple noun.
- cynwoody 13y agoYou could use first names as your dictionary. The US Census Bureau has lists† (in the form of frequency tables) of male and female given names. †http://www.census.gov/genealogy/www/data/1990surnames/names_files.html http://www.census.gov/genealogy/www/data/1990surnames/names_...
- prezjordan 13y agoI'm going to have to disagree. Fake words are still better than single letters. It's much easier to scan for "vublu" in a segment of code than it is to scan for "v"
- zellyn 13y agoThe problem with a,b,c is that the minifiers aggressively re-use the same identifiers when scoping rules allow them to.
- anorwell 13y agoI forked the original to address this [1]. Here's a sample: var strategy = moduleInterfaceFactory.Events = { on: function(strategyFacade, strategyFactoryDecorator, interfaceFacade) { if (!flyweight(this, "on", strategyFacade, [ strategyFactoryDecorator, interfaceFacade ]) || !strategyFactoryDecorator) return this; this._events || (this._events = {}); var strategyPattern = this._events[strategyFacade] || (this._events[strategyFacade] = []); strategyPattern.push({ callback: strategyFactoryDecorator, context: interfaceFacade, ctx: interfaceFacade || this }); return this; } [1] https://github.com/ANorwell/beautify-with-words https://github.com/ANorwell/beautify-with-words
- angersock 13y agoWow, it's like an EnterpriseBridgeAdaptor for JavaScript!
- michaelmior 13y agoWhile I find this humorous (which I assume was the goal), I think using common development terminology could be worse than complete jibberish since you start to apply irrelevant meaning when reading the beautified code.
- lanna 13y agoIt is a lot easier once you've figured out what a particular variable stands for to do a global search and replace for "vublu" than "a".
- thatthatis 13y agoThat actually makes sense, it is more "grepable" even if it is less easy to reason about. I find it a lot easier to reason about "a" because my brain doesn't try to reason by association -- what could vublu mean, why would they name it vublu?