So I've been told many times that you should almost always use :WaitForChild() to reference children instead of using periods for safety.
So now when writing my scripts and if I need to reference children I always use WaitForChild, but it starts to get excessive and repetitive. For example,
game.Workspace:WaitForChild("Part"):WaitForChild("Object"):WaitForChild("Scr...
I'm wondering if I'm being too cautious or using :WaitForChild() clumsily, and if anyone could chirp in to correct me. :)

4 comments
There are some cases where you don't need
WaitForChild. In your case, it is not required. There are objects that do needWaitForChild, such as thePlayerGui,PlayerScripts, andBackpack. Just a few examples.yeah man, if the child referanced is confirmed to be there then use periods, only if you risk not having a child there do you use WaitForChild, although if the script starts up along with the server at the same time then you should be aware the child may not exist yet
So let's say I wanted to reference a TextButton located in a Frame inside a ScreenGui in the player. Would it be fine if I used :WaitForChild() just once? game.Players.Player1.PlayerGui:WaitForChild("ScreenGui")...etc ---- also it doesn't hurt to use :WaitForChild() all the time, right? It's only inconvenient.
You shouldn't use it if it's not required. If the LocalScript is a child of the TextButton, you'd have to wait for the script itself. It makes no sense waiting for an object that is the parent of a script.