前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin 重构 - F6 not working?原始代码目标代码重构步骤如下:小结问题

Kotlin 重构 - F6 not working?原始代码目标代码重构步骤如下:小结问题

作者头像
lambeta
发布2018-08-17 11:29:00
1690
发布2018-08-17 11:29:00
举报
文章被收录于专栏:编舟记编舟记

原始代码

代码语言:javascript
复制
class RefactorClass {
    val data: RefactorData = RefactorData("lambeta")
    fun refactorIt() {
        println("hello, ${data.name}")
    }

}
data class RefactorData(val name: String)

目标代码

代码语言:javascript
复制
class RefactorClass {
    val data: RefactorData = RefactorData("lambeta")
    fun refactorIt() {
        data.sayHello()
    }

}

private fun RefactorData.sayHello() {
    println("hello, $name")
}

data class RefactorData(val name: String)

重构步骤如下:

  1. Extract method
  2. Convert member to extension (to top-level)
  3. Introduce parameter
  4. Convert parameter to receiver
  5. Move member

1. Extract method

Extract method

2. Convert member to extension (to top-level)

Option + Enter, Convert member to extension

3. Introduce parameter

Cmd + Option + p, Introduce parameter

4. Convert parameter to receiver

Option + Enter, Convert parameter to receiver

5. Move member

F6, Move member

小结

Kotlin 是一门函数式编程语言,函数是一等公民。多态其实是函数的固有属性,所以 Convert parameter to receiver 这种手法比较有用。

问题

至于怎么把 extension function inline to class 中,暂时还没有很好的快捷键支持,但是我们的目的已经达到了——数据结构和函数在同一个模块里。

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=doij4dlxf4pu

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.07.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原始代码
  • 目标代码
  • 重构步骤如下:
    • 1. Extract method
      • 2. Convert member to extension (to top-level)
        • 3. Introduce parameter
          • 4. Convert parameter to receiver
            • 5. Move member
            • 小结
            • 问题
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档