文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Go Gio 实战:煮蛋计时器的实现之重构

2024-12-02 16:04

关注

大家好,我是程序员幽鬼。

久等了。继续我们的 Gio 实战。

01 目标

经过前几节的学习,我们从一个空白界面慢慢添加元素,但将所有代码都放在一个文件的 main() 中会使其难以理解,也更难添加更多功能。因此,我们将稍微重构一下程序,简单地将其分解为更小的部分。

本节不增加新功能,主要探讨如何重构之前的代码。

02 代码

步骤 1:main() 太长了

main 太长,而且做的事情也太多。最好是main() 只负责启动和控制程序。进行简单重构如下:

  1. func main() { 
  2.   go func() { 
  3.     // 创建一个新窗口 
  4.     w := app.NewWindow( 
  5.       app.Title("煮蛋计时器"), 
  6.       app.Size(unit.Dp(400), unit.Dp(600)), 
  7.     ) 
  8.     if err := draw(w); err != nil { 
  9.       log.Fatal(err) 
  10.     } 
  11.     os.Exit(0) 
  12.   }() 
  13.   app.Main() 

现在,在 main() 里,我们像以前一样创建一个窗口 w,并立即将其交给一个专门函数draw()。

我们可以检查 draw() 的结果来判断是否发生了错误,并对错误进行必要的处理。

正常情况下,draw 函数不会返回。如果是用户正常关闭,通过 os.Exit(0) 退出程序;否则通过 log.Fatal(err) 输出错误信息后退出程序。

步骤 2:约束和尺寸 - 一个方便的快捷方式

之前文章详细介绍过 Constraints 和 Dimensions,因为它们使用频率很高,这里为 Dimensions 和 Context 定义简短的别名:

  1. type C = layout.Context 
  2.  
  3. type D = layout.Dimensions 

步骤 3:No 3 - draw( ) 函数

以下是 draw 函数的简化版:

  1. func draw(w *app.Window) error { 
  2.     // ... 
  3.  
  4.   // listen for events in the window. 
  5.   for e := range w.Events() { 
  6.  
  7.     // detect what type of event 
  8.     switch e := e.(type) { 
  9.  
  10.     // this is sent when the application should re-render. 
  11.     case system.FrameEvent: 
  12.         // ... 
  13.      
  14.         // this is sent when the application is closed. 
  15.     case system.DestroyEvent: 
  16.       return e.Err 
  17.     } 
  18.   } 
  19.   return nil 

和之前一样,我们通过 w.Events(),检测它们的类型。

03 小结

重构是以安全快速的方式转换代码,这对于保持清晰易于修改以满足未来需求至关重要。

本文转载自微信公众号「幽鬼」,可以通过以下二维码关注。转载本文请联系幽鬼公众号。

 

来源:幽鬼内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯