Hi torsten

Thanks for raising this.
I would like to add two points:

   - Comment methods with examples: This is why I introduced >>>
  look at at:at:
  I should fix flatCollect: btw

  To me this is super important to document even the classes that we
all know. Because newcomers don't know.


  - For the categorisation. I did a pass on the method categoriser and
it is really usable now.
  about the categorisation did you look at the little tools analyser I
did in the package AutomaticCategory Cat

       MCSmalltalkhubRepository
          owner: 'StephaneDucasse'
          project: 'AutomaticMethodCategorizer'
          user: ''
          password: ''

ProtocolAnalyzer self new statisticFor: #printOn:

{377->#printing. 3->#accessing. 1->#ui. 1->#private. 1->#transmitting}


self new statisticFor: #initialize  {

{867->#initialization. 85->#'initialize-release'. 12->#'as yet
unclassified'. 8->#initializing. 6->#accessing. 3->#'instance
initalization'. 1->#'initalize-release'. 1->#testing. 1->#'class
initialization'. 1->#'updating screen'. 1->#actions. 1->#drawing.
1->#displaying. 1->#tests. 1->#shout}
 ] ] ]

!! Miscategorized methods

Now we can  get a list of all miscategorized method definitions.
[ [ [
self new findInconsistenciesForASelector: #initialize
thatIsNotInProtocol: 'initialization'
]]]

!! Fixing miscategorized methods

 [ [ [
self new fixInconsistenciesOf: #printOn: toBeInProtocol: 'printing'
 ] ] ]




Now we could set some task forces. For myself I have
    - finish to clean users of asLayoutFrame.


What we could do is to check the protocols we want and run the tool and fix.

Stef


On Fri, Nov 17, 2017 at 11:52 AM, Torsten Bergmann <asta...@gmx.de> wrote:
> Hi,
>
> when we forked Pharo back in the days (2008) one of the primary goals of 
> Pharo was and still is to provide a CLEAN SYSTEM.
>
> Now after nearly 10 years we have done already an amazing job. But we are 
> still not there.
>
> While it is a good thing that we rewrite parts of the image, work on 
> bootstrap and new shiny tools I unfortunately see the
> effect that even some newly written code has flaws or is not meeting some 
> basic quality standards like:
>
>  - having class comments
>  - no uncategorized methods anymore
>  - not having unused temps or unused instance variables
>  - tests in a separate package than the code (to be able to have minified 
> versions without tests)
>  - class instance variable naming in lowercase
>  - ...
>
> Meanwhile in Pharo 6 and 7 there are nice tools inside to check your code. So 
> USE THEM.
>
> Some of you have already seen that I continue to do more and more of such 
> cleanups in the system in various Pharo 7
> contributions. Believe me: this is a boring task and one can earn much more 
> applause for other nice and more amazing
> contributions - but the dirty job needs to be done to clean up the house.
>
> I also started to integrate some more "Release Tests" to make sure the things 
> cleaned now stay clean over time and
> is not violated again by new Pull requests or new package inclusions.
>
> Because some of these cleanups were already done in Pharo 5 and 6 - but 
> violated again by new contributions we now need
> to enforce that the image stays at that qualit level. Because I do not want 
> to waste my time to do it over and over again!
>
> See package "ReleaseTests" or code like
>
>  ProperMethodCategorizationTest, ProperlyImplementedClassesTest, 
> #testAllClassInstanceVariablesStartLowercase and other
>
> which was written to ensure we not only GET better but also STAY better in 
> the future. Thanks to Pavel, Marcus, Esteban
> and others for reviewing and integrating.
>
> Still there is a long journey in front of us, some examples:
>
>    1. Unused Temps
>
>          CompiledMethod allInstances select: [:m | m ast temporaries 
> anySatisfy: [:x | x binding isUnused ]].  => over 200 still
>
>    2. Uncategorized methods
>
>          Object allSubclasses select: [:each | (each selectorsInProtocol: 
> Protocol unclassified) notEmpty ]    => over 200 still
>
>    3. Many many more uncommented classes. We need a special reminder to 
> people who can write many code lines a day but
>       are not able to spend a minute to write a class comment.
>
>    4. ...
>
> One person will require too much time ... several contributors helping with 
> one contribution a day or a week will already change
> the game and make it possible again. Why not have a clean base image meeting 
> basic criterias by the end of the year 2017 and
> ensuring with tests that we continue clean in 2018?
>
> Would'nt this be a nice birthday present to Pharos 10 years anniversary in 
> 2018?
>
> How can you help:
> =================
>
>   a) you can check you own packages using the provided quality tools and 
> before you integrate new features just cleanup your code
>      first
>
>   b) even as beginners you can help cleaning up such easy things and with 
> simple cleanup pull requests help moving Pharo 7 forward
>
>   c) you can think of other short snippets that reveal design or code flaws 
> and post them here
>      Then we can fix these in the image too and have the rules  enforced 
> using a separate release test
>
>   d) lets discuss and define quality criterias and note them somewhere
>
>   e) ideally you can reveal problems, open bugs, clean them up and then write 
> Release tests to ensure we stay clean
>
>
> We should and need to definitely raise the bar. I would even be more radical 
> to enforce more quality:
>
>  - in the worst case we should not accept contributions or put new versions 
> of packages into the image
>    when they do not meet basic criterias, that is the idea of the release 
> tests
>
>  - if parts of the community are not seeing this as a necessity then in the 
> worst case we need to fork Pharo again
>    into another next level CLEANED UP system ;)
>
>
> So PLEASE HELP!!! Otherwise this will KILL US and it also will be and ENDLESS 
> journey for a few people to try to clean the house.
> So PLEASE HELP before you work on the next shiny feature that might still 
> violates the basics making this an impossible journey for others
> to move forward on that frontier.
>
> Bye
> T.
>

Reply via email to