【问题标题】:Constructor instance variable Pharo构造函数实例变量 Pharo
【发布时间】:2014-01-12 15:31:33
【问题描述】:

我是 Pharo 的新手,我想知道是否有一些自动重构方法来创建一个构造函数,每个实例变量都有一个参数。现在要做到这一点,我创建了一个创建类的新实例并在新实例上调用初始化实例变量的方法的类端方法。这很无聊而且很长,但是我找不到自动执行此操作的方法(例如,我可以这样做来创建实例变量的访问器等)。

有办法吗?

【问题讨论】:

    标签: constructor refactoring instance-variables pharo


    【解决方案1】:

    简短回答:是的,有可能。

    长答案:你想这样做吗?我的意思是通常你创建一个实例并设置它的变量,例如:

    window := Window new
      width: 500;
      height: 300;
      x: 5;
      y: 10;
      yourself.
    

    您可以从方法的上下文菜单或使用快捷方式为实例变量创建 getter 和 setter(在 Nautilus 中)。

    所以你可以看看它们是如何实现的,并为“构造函数”编写类似的东西,但这在 Pharo 中并不常见,所以在这样做之前要三思而后行。

    【讨论】:

    • 好的,但为什么这比:Windows initializeWithWidth: 500 height:300 x:5 y:10. 更好?我你的简短回答你说这是可能的,但你能告诉我怎么做吗?哦,如果我能圣诞快乐! :)
    • @user1544128 因为按照自己的方式做事不会赢得很多。也许您有默认值,也许您在初始化时没有所有数据。问题是您必须确保它确实被大量使用 + 我会避免使用长名称的方法。我会尽快扩大我的答案
    • 有时像#initializeWithWidth:height:x:y: 这样的初始化方法很有用。例如,当实例变量不打算更改时(不可变对象)。我不知道有任何重构可以做到这一点。不过,在对应用程序进行原型设计时,您可能希望避免这种做法。我曾经有很多像这样的初始化方法,但我停止了,因为维护工作量太大(例如,添加/删除实例变量时)。
    • @DamienCassou 是的,但通常我发现它们是根据方法的想法量身定制的。我不知道生成所有内容是否有意义,然后问题是哪个顺序。但是可以有一个智能发电机。
    猜你喜欢
    • 2023-03-02
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多