【发布时间】:2014-10-02 22:07:27
【问题描述】:
我正在用 Go 编写一个简单的程序作为学习语言的练习。该程序是一个游戏玩家:它exec.Commands 是一个基于文本的游戏,然后通过StdinPipe/StdoutPipe 与之通信。在闲逛并阅读了大量在线文档后,我设法让骨架工作了——相当于 Hello World,我已经建立了双向通信,并且可以处理程序终止等错误。
现在我正在尝试编写实际的游戏 AI 代码。因为我的目的是学习这门语言,所以我对风格非常谨慎——我不只是想用 Go 编写 C(或其他语言)。
程序中明显的分工(一旦完成所有设置)分为两部分。首先,程序查看当前状态并决定应该向游戏发出什么命令。其次,程序查看返回的数据并相应地更新状态。 (是的,这是一个简单的游戏——它等待输入然后响应,不存在时间问题。)
我不确定这些状态信息应该放在哪里。将它全部转储到全局范围内感觉是错误的,并且制作一个巨大的单例对象似乎更糟(而且 Go 并不是特别 OO)。在任何情况下,我都不想让函数传递并返回 20 多个变量。
一般建议很好,但我最感兴趣的是惯用的 Go 语言。根据要求,我可以共享代码,但我认为这不会有帮助。
【问题讨论】:
标签: architecture go coding-style global-variables information-hiding