Background
I few days ago I was checking some code from a co-worker and I was drawn to his usage of spec
:
@spec hello(String.t(), String.t(), integer(), map()) :: any()
#function code here ....
We came together and he asked me why my usage of spec
s was different (I don’t use parenthesis):
# No parenthesis
@spec hello(String.t, String.t, integer, map) :: any
To which I responded:
"Well, the compiler will realize this is a function and will expand it automatically. So in reality, adding the extra parenthesis everywhere just adds more noise to your code without any real value and for functions with many arguments it makes the code harder to read. Also, since I am using the 80 characters per column limit, I find it that doing it this way is more compact while still delivering me the same amount of information. "
To which he replied:
Yeah but … in the official docs they use parenthesis everywhere. Why do they do it then?
Weerrmmmm… I have no idea.
Questions
- Do you use parenthesis in your
spec
calls? - If so, why? (or why not?)
- Why does the documentation uses parenthesis every where?
- Are there any tangible benefits to using the parenthesis?
- What is the community standard on this matter ?