[HN Gopher] Why, oh why was this added? ___________________________________________________________________ Why, oh why was this added? Author : ziga-miklic Score : 36 points Date : 2022-05-27 06:08 UTC (16 hours ago) (HTM) web link (zigamiklic.com) (TXT) w3m dump (zigamiklic.com) | bombcar wrote: | Whenever you have to modify code _elsewhere_ because of a side | effect in the current function /file - it should be cross- | referenced commented (in both places) because of things like | this. | | Just because Chesterton's Fence is a thing doesn't mean you have | to build new ones without signs on them. | noduerme wrote: | There are really few times I find stopPropagation() necessary, | and try to use it as little as possible. Usually it's something | right there in a parent. Even so, the larger point here is that | events are very hard to trace through code. This is why I always | use enums or static variables to define the names (event types) | of events any given class will emit within the class definition. | It makes it a lot easier to see what other code references that | static name than it does to find every instance of "click" in a | huge codebase. | | If you only add stopPropagation() when there's a reason, then at | least later you know there had to be a reason. | ziga-miklic wrote: | I completely agree. stopPropagation() should be used only as a | last resort. I have removed a lot of unneeded use cases with | this task, but because of the size of our codebase, many still | remain. But at least now they include a comment as to why they | exist :) | | With enums/static variables are you referring to custom events | or also DOM events? For custom-based events we use that | approach but not for DOM events. If you do use it for DOM | events, I'm curious to know more about it. Thank you! | [deleted] | tetha wrote: | > To make sure you don't forget, you quickly add a comment | explaining why event.stopPropagation() is there. You are hopeful | that it will help save time for someone in the future. That | future someone might even be you. | | This is something I've been training and forcing myself to do. If | I spend 10 - 15 minutes thinking about some piece of code or | infrastructure to understand why it's here and what it does... | add whatever you learned and found out as a comment. Even, or | especially if it wasn't fruitful, and your only answer is "the | system is being weird here in the following way, and this mess is | here to fix it, kind of, in most cases - and since you're here, I | guess not in this case". | hvs wrote: | I admit that I'm a terrible (descriptive) code commenter and | that is after 25+ years as a professional programmer, BUT I | always try to add a comment when I add some weird code to fix | an odd bug or add some special case. | | And I can confidently say that pretty much every descriptive | comment I've ever written was out-of-date shortly after it was | written, but the "hey, this weird because of X and if you think | you are going to optimize or fix something you need to be aware | of this special case" have saved me numerous times. | pcthrowaway wrote: | Actually wanting events to bubble past a handler is rare enough | that I sometimes just through e.stopPropagation() in without | thinking too much about it. It's much more common to be bitten by | _allowing_ events to continue bubbling IMO | layer8 wrote: | This is one of the most important skills to learn as a developer: | when to add a comment explaining the reason for some non-obvious | code -- and also how to write it so that enough context is given | for the future reader, who may not have the same understanding | that you have of the rest of the codebase and the business | requirements. ___________________________________________________________________ (page generated 2022-05-27 23:00 UTC)