質問: 背景Rubyでは、クラスやモジュールの中でもクラスを作成できるので、Railsの`ActiveRecord::Base`のように、外側のモジュール/クラスを名前空間として使って、クラスを作成できます。 そして、コード品質・読みやすさの向上を図って、Rubocopでチェックを回しています。 そこで、2点気になることがありました。いくらRubocopを入れているからと言え、理由もわからないまま闇雲に従うのも正しい態度ではないと思って、指摘される背景を気にしています。ご教示いただければ幸いです。 その1 ---- 何気なく以下のようなコードを書くと、Rubocopに、「分けて書くように」という指摘をされました。これはどのような背景があっての指摘なのでしょうか。 ``` # ダメ出しされた例 class Foo::Bar # 略 end # こう書いたほうがいい、とのこと module Foo class Bar # 略 end end ``` その2 ---- 分けて書いた場合ですが、今度は「クラスコメントがない」という指摘を受けました。ただ、内側はともかく、外側については独自のコードを書かない場面で、何を書けばいいのかわかりません。`# :nodoc:`で省略してしまってもいいものなのでしょうか。それとも、「こんなことを書いたほうがいい」というものがありますでしょうか。 バージョン情報 -------- * Ruby 2.2.4 * Rubocop 0.37.2
回答: 1について興味があったので調べてみたところ、以下に辿り着きました。 `class Foo::Bar` だと、`Foo` が定義されていない場合に `NameError: uninitialized constant Foo` が発生するので、それを避けるためかと思います。 ドキュメントについての習慣は私はあまり詳しくないので、すいませんがコメントは控えようかと思います。