Precedence is only an issue if your input contains a lot of different operators and you aren't aware of their precedence. For example, something like
expr1 /* expr2 // expr4~expr5~expr6 @ expr7
Here you can find a list with the most common operators listed in order of decreasing precedence. This answer contains information on how to find the precedence of an operator and a link to the A New Mathematica Programming Style presentation from the 2007 Wolfram Technology Conference.
The main reason not to use postfix and prefix notation excessively in the final code is performance.
Especially when using a lot of computational cheap pure functions, such as in your input example, the introduced overhead is significant:
Table[
{(Range[100] // Partition[#, 10] & //
Grid[#, Spacings -> {1, 1}] & // AbsoluteTiming //
First)/(Grid[Partition[Range[100], 10], Spacings -> {1, 1}] //
AbsoluteTiming // First),
(Grid[#, Spacings -> {1, 1}] &@Partition[#, 10] &@Range[100] //
AbsoluteTiming //
First)/(Grid[Partition[Range[100], 10], Spacings -> {1, 1}] //
AbsoluteTiming // First)}
, 200] // Mean
{1.23117, 1.23615}
I mainly use postfix notation for the output styling part of my code. The personal preferences for different input forms is probably due to one's flow of thinking and programming. f[x]
is closer to the mathematical notation $ f(x) $ and f @ x
is like saying " f of x" or "f applied to x". Both these notations are very similar in their logic, as they start with the output one wants to get or the thing one wants to do, whereas x // f // g
is more inline with a step-by-step approach of "first take/make x, than apply f to it, and finally do g".
//someFunction
on a separate line which is only possible in e.g.Module
since otherwise each line gets treated as a separate expression to be evaluated. $\endgroup$(expr // someFunc1 // someFunc2 ...)
, then no module is needed $\endgroup$