QualityImprovements assured by tests
Hi, One year later we are close to a final release for Pharo 6 and either with Pharo 6 or upcoming Pharo 7 I would really like to see some checks that ensure a quality image and tests who keep us all more disciplined in the future. Because: 1. We should not have undocumented classes: (Object allSubclasses select: [:cls| cls hasComment not ]) but we have a lot in Pharo 6 now since we introduced new packages in this release iteration 2. We should not have class instance variables in uppercase but: (Object allSubclasses select: [:cls| cls isMeta]) select: [:cls| cls instVarNames anySatisfy: [:n | n first isUppercase]] is not empty - although this was already discussed back in 2008 (!), see http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2008-November/003... 3. We should not have uncategorized methods but: (Object allSubclasses select: [:cls| (cls selectorsInProtocol: Protocol unclassified) notEmpty ]) we still have them. 4. I've seen methods with unused temporary variables. Dont know about unused ivars or other. 5. add you own here ... I know this is often boring to comment or categorize - but we should do our homework as we wanted to better compared to the past. Also if the base image is not following rules how should we expect others to provide quality packages on top of it? IMHO we should raise the bar. Either in Pharo 6 or in early Pharo 7. We can fix these once and for all AND assure with unit tests that we keep the standard image on this quality level. Thx T.
How about a sprint? I surely am not the most qualified person to comment a class I did not create but we can all remove crap ! Envoyé à partir de Yahoo Courriel sur Android Le ven., mai 19 2017 à 18:26, Torsten Bergmann<astares@gmx.de> a écrit : Hi, One year later we are close to a final release for Pharo 6 and either with Pharo 6 or upcoming Pharo 7 I would really like to see some checks that ensure a quality image and tests who keep us all more disciplined in the future. Because:  1. We should not have undocumented classes:     (Object allSubclasses select: [:cls| cls hasComment not ])   but we have a lot in Pharo 6 now since we introduced new packages in this release iteration  2. We should not have class instance variables in uppercase but:   (Object allSubclasses select: [:cls| cls isMeta]) select: [:cls| cls    instVarNames anySatisfy: [:n | n first isUppercase]]   is not empty - although this was already discussed back in 2008 (!), see   http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2008-November/003...  3. We should not have uncategorized methods but:   (Object allSubclasses select: [:cls| (cls selectorsInProtocol: Protocol unclassified) notEmpty ])   we still have them.  4. I've seen methods with unused temporary variables. Dont know about unused ivars or other.  5. add you own here ... I know this is often boring to comment or categorize - but we should do our homework as we wanted to better compared to the past. Also if the base image is not following rules how should we expect others to provide quality packages on top of it? IMHO we should raise the bar. Either in Pharo 6 or in early Pharo 7. We can fix these once and for all AND assure with unit tests that we keep the standard image on this quality level. Thx T.
I agree with you. This is why I worked on the auto categoriser. then I improve the categorizer inside the image. Now I have a tool to analyse the categories but no time and I did not want to break everything but we could push some rules. if people would have published slices on such issues I'm quite sure that we would have integrated them, now the question is that it takes time and we were focused on other urgent tasks. Stef On Sat, May 20, 2017 at 12:25 AM, Torsten Bergmann <astares@gmx.de> wrote:
Hi,
One year later we are close to a final release for Pharo 6 and either with Pharo 6 or upcoming Pharo 7 I would really like to see some checks that ensure a quality image and tests who keep us all more disciplined in the future.
Because:
1. We should not have undocumented classes:
(Object allSubclasses select: [:cls| cls hasComment not ])
but we have a lot in Pharo 6 now since we introduced new packages in this release iteration
2. We should not have class instance variables in uppercase but:
(Object allSubclasses select: [:cls| cls isMeta]) select: [:cls| cls instVarNames anySatisfy: [:n | n first isUppercase]]
is not empty - although this was already discussed back in 2008 (!), see http://lists.pharo.org/pipermail/pharo-dev_lists. pharo.org/2008-November/003366.html
3. We should not have uncategorized methods but:
(Object allSubclasses select: [:cls| (cls selectorsInProtocol: Protocol unclassified) notEmpty ])
we still have them.
4. I've seen methods with unused temporary variables. Dont know about unused ivars or other.
5. add you own here ...
I know this is often boring to comment or categorize - but we should do our homework as we wanted to better compared to the past. Also if the base image is not following rules how should we expect others to provide quality packages on top of it?
IMHO we should raise the bar. Either in Pharo 6 or in early Pharo 7. We can fix these once and for all AND assure with unit tests that we keep the standard image on this quality level.
Thx T.
I think that the most important question is: did we integrate some code with these issues in pharo 6? Because definitely everyone is lazy to go and fix issues, but we should not integrate the new ones (especially when we have monkey checking that stuff). Uko
On 20 May 2017, at 14:13, Stephane Ducasse <stepharo.self@gmail.com> wrote:
I agree with you. This is why I worked on the auto categoriser. then I improve the categorizer inside the image. Now I have a tool to analyse the categories but no time and I did not want to break everything but we could push some rules.
if people would have published slices on such issues I'm quite sure that we would have integrated them, now the question is that it takes time and we were focused on other urgent tasks.
Stef
On Sat, May 20, 2017 at 12:25 AM, Torsten Bergmann <astares@gmx.de <mailto:astares@gmx.de>> wrote: Hi,
One year later we are close to a final release for Pharo 6 and either with Pharo 6 or upcoming Pharo 7 I would really like to see some checks that ensure a quality image and tests who keep us all more disciplined in the future.
Because:
1. We should not have undocumented classes:
(Object allSubclasses select: [:cls| cls hasComment not ])
but we have a lot in Pharo 6 now since we introduced new packages in this release iteration
2. We should not have class instance variables in uppercase but:
(Object allSubclasses select: [:cls| cls isMeta]) select: [:cls| cls instVarNames anySatisfy: [:n | n first isUppercase]]
is not empty - although this was already discussed back in 2008 (!), see http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2008-November/003... <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2008-November/003...>
3. We should not have uncategorized methods but:
(Object allSubclasses select: [:cls| (cls selectorsInProtocol: Protocol unclassified) notEmpty ])
we still have them.
4. I've seen methods with unused temporary variables. Dont know about unused ivars or other.
5. add you own here ...
I know this is often boring to comment or categorize - but we should do our homework as we wanted to better compared to the past. Also if the base image is not following rules how should we expect others to provide quality packages on top of it?
IMHO we should raise the bar. Either in Pharo 6 or in early Pharo 7. We can fix these once and for all AND assure with unit tests that we keep the standard image on this quality level.
Thx T.
participants (4)
-
Benoit St-Jean -
Stephane Ducasse -
Torsten Bergmann -
Yuriy Tymchuk