class 名称中的双冒号和 RubyMine 对短名称的投诉
Double colon in class name and RubyMine complaints about short name
我有以下自动生成的控制器
conrollers/v2/base_controller.rb.
class V2::BaseController < ApplicationController
end
它是由 Versionist gem 生成的。我正在尝试制作一个继承自 V2::BaseController
的控制器。我写了
class V2::MainController < V2::BaseController
def index
render :text => 'abcde'
end
end
它工作正常,我可以在浏览器中看到我的文本。但是,RubyMine IDE 抱怨 V2::MainController
中的 class 名称 V2
太短,我应该重命名 class.
我很困惑,因为我认为 V2::
意味着我们在 V2
模块中定义了一个新的 class。如果我错了,那么为什么 RubyMine 会忽略与 BaseController
相同的问题?
UPD:RubyMine 投诉
不,这只是您作为程序员的通知。简短的变量名通常含糊不清且不易透露意图,因此这是一项很好的检查,但绝对不是必需的。
我认为 V2
非常适合您的情况,但如果您仍然担心,只需将其重命名为 Version2
即可让 Rubymine 满意。我不知道它是否仍然与您使用的 gem 兼容。 看来 Rubymine 不喜欢 。
But why does IDE show the notice only for MainController?
这里我可以考虑2个选项:
- 这是 RubyMine 索引中的一些小故障。或者,也许这样做是为了不向您的文件树发送带有红色下划线的垃圾邮件(一个实际上足以让您注意到这一点)。尝试重新启动 IDE 并查看它是否消失。
- RubyMine 找不到
V2
模块的定义,因为 class V2::MainController
中的 V2
是对某处已定义模块的引用,而不是其定义。解决方案:创建空模块并查看警告是否消失。
app/controllers/v2.rb
module V2
end
Ruby我的使用 reek
进行代码气味检测。
它给你的警告叫做 Uncommunicative Module Name。
Uncommunicative Module Name checks for:
- 1-character names
- any name ending with a number
在您的案例中,警告是由 V2
中的 2
引起的。即使 Version2
也是一样。
但这实际上只是一个建议。 Ruby 使用此代码可以正常工作。
我有以下自动生成的控制器 conrollers/v2/base_controller.rb.
class V2::BaseController < ApplicationController
end
它是由 Versionist gem 生成的。我正在尝试制作一个继承自 V2::BaseController
的控制器。我写了
class V2::MainController < V2::BaseController
def index
render :text => 'abcde'
end
end
它工作正常,我可以在浏览器中看到我的文本。但是,RubyMine IDE 抱怨 V2::MainController
中的 class 名称 V2
太短,我应该重命名 class.
我很困惑,因为我认为 V2::
意味着我们在 V2
模块中定义了一个新的 class。如果我错了,那么为什么 RubyMine 会忽略与 BaseController
相同的问题?
UPD:RubyMine 投诉
不,这只是您作为程序员的通知。简短的变量名通常含糊不清且不易透露意图,因此这是一项很好的检查,但绝对不是必需的。
我认为 V2
非常适合您的情况,但如果您仍然担心,只需将其重命名为 看来 Rubymine 不喜欢 Version2
即可让 Rubymine 满意。我不知道它是否仍然与您使用的 gem 兼容。
But why does IDE show the notice only for MainController?
这里我可以考虑2个选项:
- 这是 RubyMine 索引中的一些小故障。或者,也许这样做是为了不向您的文件树发送带有红色下划线的垃圾邮件(一个实际上足以让您注意到这一点)。尝试重新启动 IDE 并查看它是否消失。
- RubyMine 找不到
V2
模块的定义,因为class V2::MainController
中的V2
是对某处已定义模块的引用,而不是其定义。解决方案:创建空模块并查看警告是否消失。
app/controllers/v2.rb
module V2
end
Ruby我的使用 reek
进行代码气味检测。
它给你的警告叫做 Uncommunicative Module Name。
Uncommunicative Module Name checks for:
- 1-character names
- any name ending with a number
在您的案例中,警告是由 V2
中的 2
引起的。即使 Version2
也是一样。
但这实际上只是一个建议。 Ruby 使用此代码可以正常工作。