I want to make a video tutorial about System Browser and I want to clarify some things first : --- Part 1 --> Methods ---- 1) What "Browser full" really means ? and whats the difference with plain browsing ? 2) When I move a method to a different package , what really happens ? 3) When refactoring a method to add a parameter how this works because I cant make it work. 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 ? 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. -- Part 2 --> Classes ---- 9) In analyze sub menu there is a "Force the generation of intialize method" what this means ? 10) In refactoring > coder rewriting . How all options work ? Whats their purpose ? 11) In refactoring > class refactoring what Realize really does ? 12) in refactoring > class refactoring if I do split and press cancel in both dialogs to cancel the actions to exits with an error. 13) add in group also displays the same error here --- Part 3 -- Packages 14) add in group throws me an error 15) What "Add tag" really does ? Those are just "a few" questions for now. I want to make a tutorial that really exposes the power of system Browser.
Hi Kilon, 2014-06-07 11:12 GMT+02:00 kilon alios <kilon.alios@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
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 <nicolaihess@web.de> wrote:
Hi Kilon,
2014-06-07 11:12 GMT+02:00 kilon alios <kilon.alios@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
On 07 Jun 2014, at 13:03, Nicolai Hess <nicolaihess@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
participants (3)
-
Benjamin -
kilon alios -
Nicolai Hess