On Saturday 17 of January 2015 15:59:19 Slávek Banko wrote:
On Friday 09 of January 2015 23:33:01 Timothy Pearson wrote:
Also on the docket are how to handle simple variable assignments; there are several ways I've seen: a=2; a = 2; a= 2; a =2;
I'm fairly undecided on this. For consistency with larger statements "a = 1;" should probably be used but it seems such a waste of space compared with "a=1;". Thoughts?
Both "a=1" and "a = 1" are fine for me. For long time I used the first way, but in the last couple of years I switched ti the second one: usually more readable for simple expressions but can become confusing with long and complex ones such as: if ((a = 2) && (++b != (c + (x * y) / f(q,w,e)))) Choice is up to you and Slavek.
I'm going to lean towards forcing spaces for consistency. What is your opinion Slavek?
Yes, with spaces - in my view certainly readable.
Wow, now I noticed a great debate about the spaces / no-spaces on Ehterpad. I prefer to continue the discussion here.
I would say that there already was a consensus regarding spaces in the assignments - ie "a = b + c" and already there was a consensus regarding spaces around operators in conditions such as if, while - ie "if (a == b)".
All was fine until we had a case of 'for'. At its core, it does not contain anything new - uses the assignment and uses conditions => for both there already was a consensus. So one would expect that there is no problem.
Michele proposed: for (i = 0; i < 1; i = i + 2) { }
advantage - is fully in line with already agreed practices disadvantage - are harder to distinguish the individual 'for' expressions
Tim proposed: for (i=0; i<1; i=i+2) { }
advantage - are well distinguishable individual 'for' expressions disadvantages - difficult to read individual 'for' expressions as such - is inconsistent with already agreed practices
I understand Tim's argument. But that we would either to 'for' give exemption from other rules - which does not sound too good, or we would have to change already agreed rules - which is even worse option. I really would not want to because of the 'for' reduce the readability of all other conditions and assignments.
But there is another thing - more complex 'for' where individual parts can contain more assignments and more conditions - in such cases Tim's argument will be less important - on the contrary will be greater problem reduced readability each expressions as such.
Therefore I have two proposals:
1) As with the 'if' use 'excessive' brackets:
for ((i = 0); (i < 1); (i = i + 2)) { }
2) More complex 'for' break into lines:
for ((i = iteratorInicialization(arg)); (i != iteratorEnd(arg)); (i = iteratorNext(arg))) { }
What do you think about that?