-
Notifications
You must be signed in to change notification settings - Fork 29.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
lib: name anonymous callbacks #21412
Conversation
lib/_tls_common.js
Outdated
@@ -240,7 +240,7 @@ exports.translatePeerCertificate = function translatePeerCertificate(c) { | |||
c.infoAccess = Object.create(null); | |||
|
|||
// XXX: More key validation? | |||
info.replace(/([^\n:]*):([^\n]*)(?:\n|$)/g, function(all, key, val) { | |||
info.replace(/([^\n:]*):([^\n]*)(?:\n|$)/g, function replacerCallback(all, key, val) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is that supposed to be replaceCallback
instead of replacerCallback
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It wasn't a typo in my head. I suppose that it makes sense in both versions:
replacerCallback
-> the replacer function (insidereplace
)replaceCallback
-> the callback of thereplace
function
Happy to change it of course
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nah, if it wasn't a typo, it's fine with me. Just wanted to give you the opportunity to fix it up if it was a mistake.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM if CI is green
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for doing this and following up! 🎉
Glad to see it all seems to go well :) If I understood correctly, the standard process is to wait at least 48 hours before merging, am I right? Is there anything else that needs to be done? |
@mlrv that is correct, we can fast track this one though since it's naming rather than functionality. This is all explained here: https://github.com/nodejs/node/blob/master/COLLABORATOR_GUIDE.md#waiting-for-approvals . It also explicitly states that since this is a Collaborators 👍 this comment to support fast-tracking this change. |
CI again to try to confirm Windows failure is unlikely to be related: https://ci.nodejs.org/job/node-test-pull-request/15538/ |
Hmmm... let's try a total re-run: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @mlrv — thank you for working on this. In my opinion naming should provide some value, rather than just being decorative. Names such as socketOnceCallback
do not help anyone and do not make the stack trace any more descriptive than an anonymous function would. I've left some comments regarding some potentially more useful names.
lib/_stream_readable.js
Outdated
@@ -721,7 +721,7 @@ Readable.prototype.pipe = function(dest, pipeOpts) { | |||
}; | |||
|
|||
function pipeOnDrain(src) { | |||
return function() { | |||
return function pipeOnDrainInner() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pipeOnDrainCallback? It won't be "inner" by the time it's in a stack trace.
lib/_http_outgoing.js
Outdated
@@ -185,7 +185,7 @@ OutgoingMessage.prototype.setTimeout = function setTimeout(msecs, callback) { | |||
} | |||
|
|||
if (!this.socket) { | |||
this.once('socket', function(socket) { | |||
this.once('socket', function socketOnceCallback(socket) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
socketSetTimeoutOnConnect
?
lib/_http_outgoing.js
Outdated
@@ -202,7 +202,7 @@ OutgoingMessage.prototype.destroy = function destroy(error) { | |||
if (this.socket) { | |||
this.socket.destroy(error); | |||
} else { | |||
this.once('socket', function(socket) { | |||
this.once('socket', function socketOnceCallback(socket) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
socketDestroyOnConnect
?
lib/_tls_common.js
Outdated
@@ -240,7 +240,7 @@ exports.translatePeerCertificate = function translatePeerCertificate(c) { | |||
c.infoAccess = Object.create(null); | |||
|
|||
// XXX: More key validation? | |||
info.replace(/([^\n:]*):([^\n]*)(?:\n|$)/g, function(all, key, val) { | |||
info.replace(/([^\n:]*):([^\n]*)(?:\n|$)/g, function replacerCallback(all, key, val) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Switch to an anonymous function instead of naming it? The function name is not particularly useful.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought there was consensus that naming anonymous callback functions was helpful. If that's not the case, I should update #8913 (comment).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@apapirovski any update on this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My bad here as far as dropping the ball and misphrasing. What I meant to say is: I think this should just be an arrow function. I don't think we gain much by naming callbacks for things like String.prototype.replace
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I implemented the suggestions and fixed the conflicts. Happy to go ahead if all the checks are green?
Hi @apapirovski, thanks for the feedback, I totally see your point. Happy to change the names if you think those could be more helpful. On the last comment, not sure I agree with you, what do other people think? |
lib/_tls_common.js
Outdated
@@ -240,7 +240,7 @@ exports.translatePeerCertificate = function translatePeerCertificate(c) { | |||
c.infoAccess = Object.create(null); | |||
|
|||
// XXX: More key validation? | |||
info.replace(/([^\n:]*):([^\n]*)(?:\n|$)/g, function (all, key, val) { | |||
info.replace(/([^\n:]*):([^\n]*)(?:\n|$)/g, function(all, key, val) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would suggest just using (all, key, val) => {
here.
@benjamingr all green, good to go? :) |
not sure about the arrow function fitting in with the rest but won't block
Weird. CI failed on git due to a conflict. Let's try again... |
GitHub says this has no conflicts with the base branch, but manually trying to apply the changes shows conflicts. I'll resolve them, push back up, and restart CI. |
This commit is to help in the effort to name all anonymous functions to help when heap debugging. Specifically, this commit fixes some anonymous functions used as listeners in the lib/ folder. Refs: nodejs#8913
Might be good for people to double-check the changes now that I've done a rebase and resolved conflicts. |
Resume Build: https://ci.nodejs.org/job/node-test-pull-request/16165/ |
This commit is to help in the effort to name all anonymous functions to help when heap debugging. Specifically, this commit fixes some anonymous functions used as listeners in the lib/ folder. PR-URL: #21412 Reviewed-By: Weijia Wang <starkwang@126.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Jon Moss <me@jonathanmoss.me> Refs: #8913
Landed in d7496bf, congrats on your first PR to Node.js! |
This commit is to help in the effort to name all anonymous functions to help when heap debugging. Specifically, this commit fixes some anonymous functions used as listeners in the lib/ folder. PR-URL: #21412 Reviewed-By: Weijia Wang <starkwang@126.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Jon Moss <me@jonathanmoss.me> Refs: #8913
First contribution here!
This commit is to help in the effort to name all anonymous
functions to help when heap debugging. Specifically, this commit
fixes some anonymous functions used as listeners in the lib/ folder.
Refs: #8913
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passes