代码重构案例集锦

发布于 2022-09-22 23:16:15 字数 1053 浏览 7 评论 0

将纯技术的,抽象出来,拧成单独的方法(业务的归业务,技术的归技术),原始写法:

// 解析 Key,生成 ConfKey 对象。
func ParseKey(key string, content FileContent) *ConfKey {
  pre := strings.Index(key, "pre:") == 0

  s := key[4:]
  appIdEnd := strings.Index(s, ":")
  appId := key[:appIdEnd]

  s = s[appIdEnd+1:]
  filenameEnd := strings.Index(s, ":")
  filename := ""
  if filenameEnd < 0 {
    filename = s
  } else {
    filename = s[:filenameEnd]
  }

  return &ConfKey{
    Pre:      pre,
    AppId:    appId,
    Filename: filename,
    Crc:      content.Crc,
    Content:  content.Content,
  }
}

因为上面的代码 ,曾经出了一个小bug,所以搞定完 bug 后,干脆重构了一下,下面是重构后的写法

// ParseKey 解析 Key,生成 ConfKey 对象。
func ParseKey(key string, content FileContent) *ConfKey {
  m := SplitByFormat(key, "tag:appId:filename:", ":")

  return &ConfKey{
    Pre:      m["tag"] == "pre",
    AppID:    m["appId"],
    Filename: m["filename"],
    Crc:      content.Crc,
    Content:  content.Content,
  }
}

好处:将纯技术的分解动作抽象成按格式分解,提炼成一个小的公共方法,业务这边代码量减少了,可读性提升了,同时,新提炼的公共方法,也可以很方便地做单元测试了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

列表为空,暂无数据

关于作者

何以笙箫默

暂无简介

0 文章
0 评论
0 人气
更多

推荐作者

淹不死的鱼

文章 0 评论 0

zhangMack

文章 0 评论 0

爱的故事

文章 0 评论 0

linces

文章 0 评论 0

早乙女

文章 0 评论 0

鸵鸟症

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击“接受”或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。