Re: [Pharo-dev] Understanding the System Browser
On 07 Jun 2014, at 13:03, Nicolai Hess nicolaih...@web.de wrote: --- Part 1 -- Methods 1) What Browser full really means ? and whats the difference with plain browsing ? I would say Browse Full is the normal browser, no scope and other (older) SystemBrowser had some special views, like hierarchy browser, version browser… That’s something like that :) Actually it opens a new browser, with the exact same state as the current one. Kind of a `Nautilus clone`. 7) why rename method all is in the main menu and in the sub menu “refactoring The refactoring engine comes as a plugin/layer on top of the bare Nautilus. So some actions are implemented without the refactoring engine (the `Analyse` menu) and some are implemented with the Refactoring engine. Moreover, some actions are in the main menu and the refractoring menu because it’s a refactoring often used, and you do not want 5 clicks to reach it. 8) add in Group throws me an error listmanager is nil. Groups are buggy, I am about to refactor and fix this. Feel free to file some bug reports if they are missing. They use to work :P -- Part 2 -- Classes 9) In analyze sub menu there is a Force the generation of intialize method what this means ? generates an initialze method which calls super initialize and initialize all instvars with nil, helpful if you make a new subclass with additional inst vars. What you describe is `Generate initialize method`. If you already have an `initialize` method, doing `Generate initialize method` will only jump to the method, while the `Force the generation of initialize method` will empty it and fill it with the default pattern once more. 10) In refactoring coder rewriting . How all options work ? Whats their purpose ? They use to work, but I never use them so I can not be sure they still work :P It brings some DSL for AST manipulation. I think there is a chapter about that in PBE 11) In refactoring class refactoring what Realize really does ? It goes for all the `shouldBeImplemented` in the superclasses, and create a method for it. It turns an abstract class into a concrete one :) Ben
Re: [Pharo-dev] Understanding the System Browser
Hi Kilon, 2014-06-07 11:12 GMT+02:00 kilon alios kilon.al...@gmail.com: I want to make a video tutorial about System Browser and I want to clarify some things first : Great! --- Part 1 -- Methods 1) What Browser full really means ? and whats the difference with plain browsing ? I would say Browse Full is the normal browser, no scope and other (older) SystemBrowser had some special views, like hierarchy browser, version browser... 2) When I move a method to a different package , what really happens ? The methods protocol will change, and therefor it belongs now to different package than its class 3) When refactoring a method to add a parameter how this works because I cant make it work. For example Workspace#openFile: and you would like to add a failblock add paramter, change selector to openFile:ifFailed: and define the default value, for example nil. Now all existing calls to Workspace#openFile: will be replaced with openFile:filename ifFailed:nil 4) What does Inline parameter for factoring methods really does ? Does it just convert the method to a unary with the argument as a local ? 5) What inline target sends does ? 6) How method move works ? This may be a usefull refactoring, I never used :) The purpose is, if you have a method (#draw for example) in Object X which implementation highly depens on the internal structure of one of the instvars of X, it is better to move this method to the class of this instvar and call something like var drawFor:self 7) why rename method all is in the main menu and in the sub menu refactoring 8) add in Group throws me an error listmanager is nil. Groups are buggy, I am about to refactor and fix this. Feel free to file some bug reports if they are missing. -- Part 2 -- Classes 9) In analyze sub menu there is a Force the generation of intialize method what this means ? generates an initialze method which calls super initialize and initialize all instvars with nil, helpful if you make a new subclass with additional inst vars. 10) In refactoring coder rewriting . How all options work ? Whats their purpose ? I would like to know that too :) 11) In refactoring class refactoring what Realize really does ? No idea 12) in refactoring class refactoring if I do split and press cancel in both dialogs to cancel the actions to exits with an error. thats bad. 13) add in group also displays the same error here groups, yes well ... --- Part 3 -- Packages 14) add in group throws me an error I hate groups :) 15) What Add tag really does ? It helps to organize classes within one package. Therefor you don't need to create seperate packages for every group, for example: MyProject-X-Core MyProject-X-Tests MyProject-X-Model MyProject-X-UI just one package with tags: MyProject-X with tags Core/Tests/Model/UI Those are just a few questions for now. I want to make a tutorial that really exposes the power of system Browser. I hope this helps, we really really need good (up to date) documentation , thank you for your efforts. nicolai
Re: [Pharo-dev] Understanding the System Browser
thank you Nicolai for the reply. I think I have enough info to cover most of my questions now in the video tutorial. But if anyone else can help out answering those please do so. On Sat, Jun 7, 2014 at 2:03 PM, Nicolai Hess nicolaih...@web.de wrote: Hi Kilon, 2014-06-07 11:12 GMT+02:00 kilon alios kilon.al...@gmail.com: I want to make a video tutorial about System Browser and I want to clarify some things first : Great! --- Part 1 -- Methods 1) What Browser full really means ? and whats the difference with plain browsing ? I would say Browse Full is the normal browser, no scope and other (older) SystemBrowser had some special views, like hierarchy browser, version browser... 2) When I move a method to a different package , what really happens ? The methods protocol will change, and therefor it belongs now to different package than its class 3) When refactoring a method to add a parameter how this works because I cant make it work. For example Workspace#openFile: and you would like to add a failblock add paramter, change selector to openFile:ifFailed: and define the default value, for example nil. Now all existing calls to Workspace#openFile: will be replaced with openFile:filename ifFailed:nil 4) What does Inline parameter for factoring methods really does ? Does it just convert the method to a unary with the argument as a local ? 5) What inline target sends does ? 6) How method move works ? This may be a usefull refactoring, I never used :) The purpose is, if you have a method (#draw for example) in Object X which implementation highly depens on the internal structure of one of the instvars of X, it is better to move this method to the class of this instvar and call something like var drawFor:self 7) why rename method all is in the main menu and in the sub menu refactoring 8) add in Group throws me an error listmanager is nil. Groups are buggy, I am about to refactor and fix this. Feel free to file some bug reports if they are missing. -- Part 2 -- Classes 9) In analyze sub menu there is a Force the generation of intialize method what this means ? generates an initialze method which calls super initialize and initialize all instvars with nil, helpful if you make a new subclass with additional inst vars. 10) In refactoring coder rewriting . How all options work ? Whats their purpose ? I would like to know that too :) 11) In refactoring class refactoring what Realize really does ? No idea 12) in refactoring class refactoring if I do split and press cancel in both dialogs to cancel the actions to exits with an error. thats bad. 13) add in group also displays the same error here groups, yes well ... --- Part 3 -- Packages 14) add in group throws me an error I hate groups :) 15) What Add tag really does ? It helps to organize classes within one package. Therefor you don't need to create seperate packages for every group, for example: MyProject-X-Core MyProject-X-Tests MyProject-X-Model MyProject-X-UI just one package with tags: MyProject-X with tags Core/Tests/Model/UI Those are just a few questions for now. I want to make a tutorial that really exposes the power of system Browser. I hope this helps, we really really need good (up to date) documentation , thank you for your efforts. nicolai