[squeak-dev] Coding style
Levente Uzonyi
leves at elte.hu
Wed Mar 10 12:47:27 UTC 2010
On Wed, 10 Mar 2010, Bert Freudenberg wrote:
> On 10.03.2010, at 02:53, commits at source.squeak.org wrote:
>>
>> + ^packageList ifNil:[packageList := (PackageInfo allPackages collect: [ :each | each packageName]) sort]!
>> - ^packageList ifNil:[packageList := (MCWorkingCopy allManagers collect:[:each| each packageName]) sort]!
>
>
> This to me replaces one style of too few spaces with another of too many ;)
>
> I'd have written
>
> collect: [:each | each packageName]
>
> but I just looked at the Blue Book and there indeed is a space before and after a block argument. OTOH it does conform to Kent's examples:
>
> http://c2.com/ppr/formatting.html
>
I try not to change the formatting of methods written by others to my
taste, but there are times when I just can't stop myself. This one liner
is half baked though...
If this was written by me entirely it would look like something like this:
^packageList ifNil: [
packageList := (PackageInfo allPackages collect: [ :each |
each packageName ]) sort ]
I used to add a space before and after all [ and ].
> Generally I feel this is not much of a problem. But I have occasionally seen rather strange formatting, So for the benefit of better readability, do we want to have general rules for formatting code?
>
> Many projects have such rules. One good example IMHO is PEP-8 in the Python community.
>
> For Smalltalk I only know Kent Beck's rules from "Best Practice Patterns" which seem like a good set. And IMHO any rules are better than none, so maybe we want to just agree that if in doubt, follow that suggested practice?
>
If someone has his/her own code formatting rules, he/she will hardly
change to another. I find my rules (which are mostly based on this book:
http://stephane.ducasse.free.fr/FreeBooks/WithStyle/SmalltalkWithStyle.pdf
) very readable, especially with shout which colorizes the brackets too.
Therefore I'm against of forcing a single code formatting. I personally
dislike Kent's "rectangular block" idea.
For example:
I found this more readable
aCollection
do: [ :each |
stream
nextPut: $(;
print: each;
nextPut: $) ]
separatedBy: [
stream
nextPut: $,;
space ]
than this
aCollection
do:
[:each |
stream
nextPut: $(;
print: each;
nextPut: $)]
separatedBy:
[stream
nextPut: $,;
space]
You can notice the rectangular shape in both examples.
I think the best would be a highly customizable pretty printer which would
allow anyone to read all methods formatted in the way he/she prefers.
Levente
> - Bert - (hoping this does not open a can of worms ...)
>
>
>
More information about the Squeak-dev
mailing list
|