更新:我现在意识到这是一个非常糟糕的例子.您可能不希望将验证或属性移出核心类.
class Large include ValIDations include Attributes include BusinessLogic include Callbacksend
在阅读耶胡达大约Better Ruby Idioms的帖子之后,我很好奇其他人是如何解决这个问题的.这是我能想到的两种方法.
第一种方法
module Foo module ValIDations module ClassMethods def bar "bar" end end module InstanceMethods def baz "baz" end end end class Large extend ValIDations::ClassMethods include ValIDations::InstanceMethods endend
第二种方法
module Foo module ValIDations def self.included(base) base.extend ClassMethods end module ClassMethods def bar "bar" end end def baz "baz" end end class Base include ValIDations endend
我的问题是:
>有更好的方法吗?
>如何以最少的魔法为一组类/实例方法获得单行模块mixin?
>如何在没有命名空间类本身的情况下将这些模块命名为基类?
>你如何组织这些文件?
编辑:详细说明为什么将代码分解为模块是一个坏主意:它让读者/维护者感到困惑.一个类应该代表一个紧密聚焦的概念.当你必须滚动数百行来查找在长类文件另一端使用的实例方法的定义时,这已经够糟糕了.当你遇到一个实例方法调用并且必须在另一个文件中寻找它时,情况会更糟.
总结以上是内存溢出为你收集整理的什么是将大型课程分解为模块的好ruby成语?全部内容,希望文章能够帮你解决什么是将大型课程分解为模块的好ruby成语?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)