Comments (4)
定数は、その定数が用いられる機能をModuleとして、それぞれの定数はそれぞれの定数の関連する機能のModuleにあった方が、再利用しやすいのではないでしょうか。
無関係の定数をMix-inしてしまう可能性が減りますし。
from rgrb.
@killist さん
ご意見ありがとうございます。下の例に近い感じでしょうか?
from rgrb.
「どちらか」と言えばそうかもしれません。
記載いただいている例はかなり物理的な意味集合に思えます。
「定数だけでmoduleに切り出して、他でもそのmoduleを使えるようにする」よりは
「その定数を使う機能のmoduleに、定数を収めておく」べきじゃないかなと思います。
(下の例なら、アラビア数字とか、漢数字とか、ローマ数字を使うようなのは、またそれぞれ別のmoduleであるべき、的な。あと、下のは擬似コードとしてください。動作確認してないし…。)
module DiceRoll
def pip=(max=6)
@pip=1..max
end
def roll
Random.rand @pip
end
end
module HiraganaCountable
HIRAGANA = ['あ','か','さ','た','な','は','ま','や','ら']
def kana_roll
i = roll % HIRAGANA.size
HIRAGANA[i]
end
end
from rgrb.
今回の問題提起は、でたとこサーガプラグインに日本語コマンドを実装する際に、DiceRollプラグインで定義されている定数を流用できないかと思って行いました。
しかし、実際には微妙に必要となる定数(正規表現)が違ったため、流用する必要がありませんでした。
せっかく意見を寄せて頂いたのですが、今回はこの機能については実装を見送りたいと思います。
ちなみに個人的には、「ジェネレータ」「定数」という単位ではなく、プラグインを丸ごと使えるようにするのがいいかと思います。
@dice_roll = RGRB::Plugin::DiceRoll.new()
@dice_roll.dxx_dice('d66')
@dice_roll.const('NUM_RE')
このような書き方ができるような。
ですがこの方法、かなり実装が大変そうだというのが簡単に想像がつきます。その時必要な機能をまた考え直したほうが実情に合ったいいものができるでしょうから、実際に使うときが来るまで実装を見送ります。
from rgrb.
Related Issues (20)
- bcdice: 対応しているゲームの一覧を出力する HOT 5
- bcdice: DiceBot が読み込まれない
- mailcatcher は Gemfile に記述することが非推奨とされている
- Jihou: 時報メッセージに任意の文章を指定できるようにする
- プラグインから設定IDを取得できるようにする HOT 2
- プラグイン構成要素別の、基底クラス的に使うモジュールを作成する HOT 2
- DiceRoll: テスト「出目に偏りがない」で失敗する確率を減らす
- Discord: DM でコマンドを送信されるとエラーが発生する
- Discord: プラグインからのログに、プラグインのクラス名が出力されない HOT 1
- ServerConnectionReport::Test: 送信したメールに、強制的にテストであることを追加する
- テストをパスさせるために、本体では無駄な行を追加した HOT 1
- 基底モジュールの名前空間・ファイルパスを変更する HOT 1
- Ctcp: 入力・出力をログに残す
- config/rgrb.yaml: Discordの設定のキーの誤り HOT 2
- rubocop によるコーディング規約に合致しているかを確認する HOT 4
- Bcdice: BCDice のバージョンを出力できるようにする HOT 4
- Trpg::Detatoko: 反応条件が .bcdice コマンドと競合している HOT 1
- PluginBase: テストコードのファイル名変更によりテストが自動的に実行されない HOT 2
- CI基盤をGitHub Actionsに移行する
- Ruby 2.6以下のサポートを落とす HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rgrb.