如何使用重构浏览器添加实例变量?

use*_*565 4 refactoring smalltalk squeak pharo

我想使用重构浏览器以编程方式将实例变量添加到现有类:

| theClass className |
className := #MyClass.
theClass := (RBClass existingNamed: className)
                model: (RBNamespace new classNamed: className; yourself);
                yourself.
theClass addInstanceVariable: 'testIVar'
Run Code Online (Sandbox Code Playgroud)

但是这个类没有用新的实例变量修改,我错过了什么?

Her*_*nán 6

你忘了执行你的重构.试试这个

| model className theClass iVarName |
className := #MyClass.
iVarName := 'testIVar'.
model := RBNamespace new classNamed: className; yourself.
theClass := (RBClass existingNamed: className)
                model: model;
                yourself.
(RBAddInstanceVariableRefactoring 
        model: model
        variable: iVarName
        class: theClass) execute.
Run Code Online (Sandbox Code Playgroud)

您可能希望为新的实例变量添加authomatic加入方法(getter和setter)

(RBCreateAccessorsForVariableRefactoring 
        model: model
        variable: iVarName
        class: theClass 
        classVariable: false) execute
Run Code Online (Sandbox Code Playgroud)