Transcript from the "Public vs Private" Lesson
>> Kyle Simpson: He was asked what's the difference between something that's public and private. So I rearranged this slightly to show, I now have an inner function here which I call upper and it does the task of taking some variable and upper casing it. And then I have this function here, and I'm using that inner function, but you'll notice that I'm not exposing that upper to the outside world.
[00:00:33] That is an internal implementation detail that from the outside world, you have no access to, but I'm still able to use it. So this is what we mean, this function is declared on line three is an inner function, it's a private function, it's not accessible to the outside world.
[00:00:47] And we're likely gonna make modules that have lots and lots of those and lots and lots of private variables like for example, the name variable that we see from line one, that's a private variable, but we can make other name variables like we could do id and we could assign it a random number is that person's ID.
[00:01:06] So now I have a user ID that is only accessible on the inside and the only way somebody can ever see that value is if I choose to make a method that exposes that in some way, otherwise it stays private. So ID now and upper and name, those are all private things.
[00:01:22] The only thing that's public is I make a reference to that function on this object that I return back, that object being a public API. There's a slight variation of lines 13 through 15 that I personally do in my own code to make it slightly clearer, more clear what's happening and it's this.
[00:01:39] Instead of returning that object, I call it public API and then I return public API. Now functionally, that's exactly the same as the previous, but this is slightly more obvious now what this object is, it's a public API. So if I'm looking through hundreds of lines of code and I see a thing declared public API, it kind of jumps out at me as like, hey, hey, there's a public API here, okay.
[00:02:11] It's just a stylistic choice that I prefer.
>> Kyle Simpson: Just to hammer home this point of the fact that this inner function still has access to stuff, I don't even have to use it in such a way where I'm passing something to it. Upper could be called upperFirstName name, and it could be set to automatically use name and so here, I don't call upper and pass in name, I just call upperFirstName without needing to pass anything into it.
[00:02:44] Still gonna work exactly the same way. It's gonna call this private inner function. That thing is gonna have access to this variable through the closure, and it'll be able to receive that value and do something with it, or use that value to do something. So that's why we end up printing Kyle in capital letters.
>> Kyle Simpson: Okay.
>> Kyle Simpson: Now hopefully, most people have.
>> Speaker 2: Snake case [INAUDIBLE].
>> Kyle Simpson: I use snake case for variables and I use camel case for functions and that's just so I remember in my own code is this something I can call or not. That's not a terribly common style that people use, but that's [INAUDIBLE].
>> Speaker 2: Its smart though.
[00:03:57] It seems like a good style.
>> Speaker 2: Okay, good enough.
>> Kyle Simpson: And even in this own piece of code, I was a little inconsistent cuz this last name, probably to keep it consistent, I should have called that last name.