在 Ruby 脚本中组织 类
Organizing classes in Ruby script
我正在写一个小游戏。我有:
class MyGame
...
class_methods
a bit of game logic
end
# after my_game unwrapped code
putss
get.chomps
methods, loops (to be DRY)
interaction with user, returning values
是否有将代码包装在一起的正确方法?在任何 class 或模块中不在 my_game class 之后包装代码是否正确,或者我应该始终将我的代码放在 classes/modules 中吗?
我会将功能包装在模块和 classes 中,因为它有一些好处:
a) 您可以轻松地为 classes 中的代码编写测试(以及通过将它们作为混入包含在 classes 中并测试 classes 中的模块)
b) 您可以控制 functions/methods 的可见性,并且您实际上可以创建一个界面,以防您的游戏消费者需要访问的不仅仅是游戏 class
c) 通过创建部分游戏功能的新实现者更容易扩展游戏部分的功能
也就是说,仅以面向对象的方式编写是没有教条的。在某些情况下(也许对于将用作命令行脚本的脚本),仅具有一些函数和执行这些函数的代码可能就足够了(特别是如果脚本通常简单且简短)。
关于您正在构建的小游戏的结构,我的建议是寻找交互,"verbs" 需要发生的(即对象之间发送的消息),然后您就会来使用将发送这些消息(方法)的 classes,我相信设计和构建游戏会变得容易得多。
顺便推荐一本对软件设计方向有帮助的好书:
http://www.amazon.com/Practical-Object-Oriented-Design-Ruby-Addison-Wesley/dp/0321721330
希望以上对你有所帮助。
我正在写一个小游戏。我有:
class MyGame
...
class_methods
a bit of game logic
end
# after my_game unwrapped code
putss
get.chomps
methods, loops (to be DRY)
interaction with user, returning values
是否有将代码包装在一起的正确方法?在任何 class 或模块中不在 my_game class 之后包装代码是否正确,或者我应该始终将我的代码放在 classes/modules 中吗?
我会将功能包装在模块和 classes 中,因为它有一些好处:
a) 您可以轻松地为 classes 中的代码编写测试(以及通过将它们作为混入包含在 classes 中并测试 classes 中的模块) b) 您可以控制 functions/methods 的可见性,并且您实际上可以创建一个界面,以防您的游戏消费者需要访问的不仅仅是游戏 class c) 通过创建部分游戏功能的新实现者更容易扩展游戏部分的功能
也就是说,仅以面向对象的方式编写是没有教条的。在某些情况下(也许对于将用作命令行脚本的脚本),仅具有一些函数和执行这些函数的代码可能就足够了(特别是如果脚本通常简单且简短)。
关于您正在构建的小游戏的结构,我的建议是寻找交互,"verbs" 需要发生的(即对象之间发送的消息),然后您就会来使用将发送这些消息(方法)的 classes,我相信设计和构建游戏会变得容易得多。
顺便推荐一本对软件设计方向有帮助的好书:
http://www.amazon.com/Practical-Object-Oriented-Design-Ruby-Addison-Wesley/dp/0321721330
希望以上对你有所帮助。