[PD-dev] Pd code formatter?

Mathieu Bouchard matju at artengine.ca
Thu Sep 27 19:14:00 CEST 2007


On Thu, 27 Sep 2007, Sergei Steshenko wrote:

> I think automatic reformatting is the only way - unless a project wants 
> too repell developers.

The main branch of Pd must be repelling people in another way, because 
not that many changes are made by non-Millers, and they all have like 5 
years of experience using Pd.

And even then, if any aspect of the code repels people, it's not 
necessarily negative. If five aspects of *my* code repel people, but 
mostly the same people in each case, and I assess that there's at least 
one aspect that I won't change no matter what, then there is not much 
incentive to "fix" any of those other four, especially if there are 
various downsides to adapting to those programmers.

Then I would also have to assess how much those programmers can contribute 
anything worthwhile if they have several principles that reduce their own 
productivity (e.g. "macros are evil") and that also reduce mine.

> For example, I understand my own code only if it formatted my way;

This is extremely unflexible of you. I use a quite special formatting for 
my own code, but I quite routinely read other people's source code in a 
variety of formattings (more different formattings than what many 
programmers would usually tolerate...). I used to hate reading code, for 
various reasons, but it's counterproductive, even when the code is 
redundant or dumbly formatted.

> whenever I inherit code from somebody else in order to understand it I 
> first reformat it my way.

This is because the act of reformatting leads you to read source code that 
otherwise you wouldn't feel compelled to put your eyes on. I know that 
phenomenon and I applied this technique to myself, but I went farther than 
reformatting: I removed unused variables and made various simplifications.
If you don't do this when doing your reformatting, you are missing an 
important opportunity.

> So, automatic reformatting upon check in is the only way to reconcile different
> styles without forcing developers to write the code in an unnatural for them way.

This only applies if you don't put information in the formatting itself.

The formatting of the code is an important opportunity to make things more 
obvious. For example, some people would spread two simple similar 
functions over 15 lines just to follow a standard, but it's possible that 
i'd found that they'd fit in 2 lines (1 line each) and that by inserting 
spaces in the right places you would see exactly what's the difference 
between the two lines and what's repetitive.

Formatting standards prevent this kind of diagrammatic approach.

e.g.

void  floatinlet_float( t_inlet *x, t_float   f) {*(x->u.floatslot) = f;}
void symbolinlet_symbol(t_inlet *x, t_symbol *s) {*(x->u.  symslot) = s;}

(I hope that this appears as two lines and not four... i tried hard to 
show something that wouldn't wrap around)

The formatting of the above code emphasises that both functions are very 
similar in structure and that the differences between the two are thin. 
This is the kind of information that does not "jump to the eye" in any 
kind of standard formatting. Indeed, it looks to me like standard 
formattings are specifically designed to prevent things from being that 
obvious (but I believe that the actual reasons are more complicated).

  _ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801, Montréal QC Canada


More information about the Pd-dev mailing list