Re: [whatwg] Confusion about node1.replace(node2)
And since methods operate on the object they are invoked upon I think the name is clear enough. The fact replace() is a method operating on an object doesn’t clarify the intention in this case,because the confusion here is that it’s unclear whether the object is having others take its place, or is itself trying take others’ place, and from the general meaning of the english word “replace”, it actually implies the latter. The general preference is brevity over precision. In most cases, I favor brevity too, but when it starts to raise confusion, especially it’s implying the opposite of what it’s actually trying to do, brevity should no longer be a priority, IMHO.
[whatwg] Confusion about node1.replace(node2)
Currently the DOM spec defines a replace() method in the ChildNode interface. I find the name for that method a bit misleading. When someone says A replace B, I get the impression that B is no longer in effect and A is the new one. So when I do `node1.replace(node2)`, I can’t help but feel node2 is replaced with node1, which is the opposite of what the spec specifies. Do you think it would be worthwhile to change to a name that states the intention a bit clearer? Maybe something like `node1.replacedWith(node2)`?
Re: [whatwg] Confusion about node1.replace(node2)
On Sat, Jan 10, 2015 at 8:26 AM, Glen Huang curvedm...@gmail.com wrote: Do you think it would be worthwhile to change to a name that states the intention a bit clearer? The general preference is brevity over precision. And since methods operate on the object they are invoked upon I think the name is clear enough. -- https://annevankesteren.nl/
Re: [whatwg] Confusion about node1.replace(node2)
I have to agree with Glen on this one. Using `node1.replace(node2);` makes me expect that `node1` will be replacing by `node2`. jQuery is famous (and sometimes infamous, depending on who you talk to) for its API brevity and yet we still chose longer names[1] for these scenarios: `replaceWith` and `replaceAll` (even including All in the latter to clarify that it operates on the entire context set, not just the first element). Dojo uses the same method names[2] as well for their NodeList implementation: `replaceWith` and `replaceAll`. If not renamed, `ChildNode#replace` will probably need to be added to my personal list DOM APIs that I'm always doubtful of how to use despite years of off-and on usage... along with, e.g. `ParentNode#insertBefore` and `ParentNode#insertAfter` for their parameter order. [1]: http://api.jquery.com/category/manipulation/dom-replacement/ [2]: http://dojotoolkit.org/api/1.10/dojo/NodeList.html Sincerely, James Greene On Jan 10, 2015 3:56 AM, Glen Huang curvedm...@gmail.com wrote: And since methods operate on the object they are invoked upon I think the name is clear enough. The fact replace() is a method operating on an object doesn’t clarify the intention in this case,because the confusion here is that it’s unclear whether the object is having others take its place, or is itself trying take others’ place, and from the general meaning of the english word “replace”, it actually implies the latter. The general preference is brevity over precision. In most cases, I favor brevity too, but when it starts to raise confusion, especially it’s implying the opposite of what it’s actually trying to do, brevity should no longer be a priority, IMHO.