Hello all, These weeks I added new refactorings, following I will give some examples of them.
*1. Create accessors with lazy initialization* This refactoring create accessors for variables with lazy initialization, for example: - we have a class Object subclass: #SomeClass instanceVariableNames: 'stringVar' classVariableNames: '' package: 'Example' - we can create accessors with lazy initialization executing this script: (RBCreateAccessorsWithLazyInitializationForVariableRefactoring variable: #stringVar class: SomeClass classVariable: false defaultValue: '''example''') execute the result of this refactoring is: SomeClass >> stringVar ^ stringVar ifNil: [ stringVar := '' ] SomeClass >> stringVar: anObject stringVar := anObject *2. Extract setUp refactoring* (is the first version by the moment, it need to be improved) This refactoring create a setUp method from a code fragment. You can select an interval of some code in a test method and call this refactoring to create a setUp method implementing that code and replace the code by nothing. The selected class need to be a subclass of TestCase. For example: - given a class TestCase subclass: #SomeTest instanceVariableNames: '' classVariableNames: '' package: 'Example' SomeTest >>testFoo self x. self assert: true SomeTest >> self x self doSomething - To extract setUp method you can execute this script: (RBExtractSetUpMethodRefactoring extract: (10 to: 16) from: #testFoo in: SomeTest) execute the result of this refactoring is: SomeTest >> setUp super setUp. self x. SomeTest >> testFoo self assert: true *3. Move method to class side refactoring* (This refactoring is still awaiting review) This refactoring move a method to class side. For example: - given a method ClassX >> annotatedBlockMarkup ^ '@@' - we can execute the refactoring with this script: (RBMoveMethodToClassSideRefactoring method: (ClassX >> #annotatedBlockMarkup) class: ClassX) execute. the result of this refactoring is: ClassX >> annotatedBlockMarkup ^ self class annotatedBlockMarkup ClassX class >> annotatedBlockMarkup ^ '@@' Any suggestions or comment of these refactorings are welcome. I hope these new refactorings are useful to you . Regards, Evelyn C.