我目前正在为测试工具编写一个非常简单的开头。我们的想法是,您可以拥有包含我的" Testable"模块。例如:
x y z
a1 a2 8 2 85
b1 b2 43 93 58
c1 c2 1 46 24
Testable模块具有以下内容:
class Veilus
include Testable
end
site = Veilus.new
当Reek签出此文件时,它会返回:
module Testable
module_function
def included(caller)
caller.extend Testable::Interface::Page::Attribute
caller.__send__ :include, Testable::Interface::Page
end
end
但这不是所包含方法中的一点吗?
我意识到我可以将Reek的这个方面转过来,但我很好奇我将如何遵循其建议?在这种情况下,这门课程并不是我所知道的关于时间的问题。其他人写的课程将包括我的模块。
同样,我知道我可以关闭支票,但似乎我可能想要在其他情况下检查。所以我开始怀疑我是否正在做#34; mixin"接近错误,这就是Reek所指出的。
答案 0 :(得分:0)
我找到了一种“处理”这种方法的方法,主要是使用self
来引用included
调用。所以,例如,我可以这样做:
module Testable
def self.included(caller)
caller.extend Testable::Interface::Page::Attribute
caller.__send__ :include, Testable::Interface::Page
end
end
我所做的是更改上面的代码,以便不再使用对module_function
的调用。 (虽然这确实与某些其他样式指南规则相冲突。)然后我在self.
消息前面使用了included
。
当我这样做时,FeatureEnvy警告不再出现。诚然,这似乎是标记FeatureEnvy条件的一种非常弱的方式。
这与其他各种问题一起使我确信不要使用Reek并坚持使用Rubocop。 (我知道在很多情况下,他们会看到非常不同的东西。)我不会提倡这种方法用于企业级开发,但是在编写测试工具方面,我发现你实际上做了很多“聪明”的事情,那就是西洋跳棋像Reek一样不喜欢。