

Ruby on Rails を使っていて、モジュール名の末尾に `able`
というサフィックスを見かけることがあります。どのような場合に、なぜこのサフィックスを付けるのでしょうか。

[Put chubby models on a diet with concerns – Signal v.
Noise](https://signalvnoise.com/posts/3372-put-chubby-models-on-a-diet-with-
concerns)

例えば上記のサイトでは次のようなコードが書かれています。

[![画像の説明をここに入力](https://i.stack.imgur.com/DSxor.png)](https://i.stack.imgur.com/DSxor.png)


CC BY-SA 3.0
2015-10-13T10:09:19.203
17599
2015-10-14T07:46:26.143
2015-10-14T07:46:26.143
8000
12758
question
ruby-on-rails
なぜRailsのモジュールでは"able"をサフィックスとして付けるのでしょうか？


RailsのConcernで使われるモジュール名はたしかに xxx-able となっているものが多いです。  
実際僕もよく xxx-able という名前のモジュールを作ります。

が、これはあくまで慣習であり、規約ではありません。  
なので、xxx-able以外のモジュール名にしても全く問題ありません。

一般論として、クラス名/モジュール名やメソッド名には「わかりやすい名前」を付けるのが原則です。  
なので、たとえば「includeすると **タグが使える** ようになるモジュール」であれば、「タグが使える = Tag + able =
Taggable」という名前を付けるとわかりやすい、ということになります。  
ですが、絶対ではないので、Taggableよりも適切な名前があると考えるのであれば、別の名前を付けるのもアリです。

とはいえ、「Concernであればxxx-
ableにする」というのがRailsの世界では「暗黙の了解」になっているので（個人的な観測範囲では）、よっぽど不自然な名前や意味がわからない名前にならない限り、xxx-
ableにした方が他のRailsプログラマにとってもわかりやすいと思います。


CC BY-SA 3.0
2015-10-13T21:46:36.207
17614
2015-10-13T21:46:36.207
85
17599
answer


モジュール名の末尾に"-able"を付ける理由は、そのモジュールがMixinしたクラスに機能を追加するからだと私は考えています。

Railsのconcernsディレクトリには、関心事を分離するために独立した機能を定義したモジュールが配置されます。例にあるようなTaggableモジュールも、独立した機能を定義したモジュールの1つです。  
そのため、命名規則として"-able"をモジュール名の末尾に付けると感じられたのだと思います。

よって、そのモジュールがMixinしたクラスに機能を追加する場合は、名前の末尾に"-able"を付けると分かりやすいモジュール名になると思います。


CC BY-SA 3.0
2015-10-14T03:34:25.997
17627
2015-10-14T03:34:25.997
7420
17599
answer