https://bugzilla.redhat.com/show_bug.cgi?id=1211831
--- Comment #12 from Michael Schwendt (Fedora Packager Sponsors Group) bugs.michael@gmx.net ---
%global name copyq %global version 2.4.6 %global release 1
It's a stylistic choice, I think it makes it easier to maintain the spec. I didn't see where they were predefined:
What becomes easier?
You can rearrange the lines in your spec file to move "Name:", "Version:" and "Release:" to the top with an empty line for better readability. You are not forced to copy the order of the lines from other people's spec files.
And yes, the tags "Name:", "Version:" and "Release:" define %{name}, %{version} and %{release}, respectively. Defining them as globals prior to assigning them to the tags doesn't add any benefit.
The redefinition bears a risk even. Consider this:
%global release 1 Release: %{release}%{?dist}
The "Release:" tag overrides the definition of %{release}. Through-out the spec file where you use %{release}, its value will not be 1 due to the redefinition.