Giter Club home page Giter Club logo

Comments (4)

killist avatar killist commented on July 28, 2024

定数は、その定数が用いられる機能をModuleとして、それぞれの定数はそれぞれの定数の関連する機能のModuleにあった方が、再利用しやすいのではないでしょうか。
無関係の定数をMix-inしてしまう可能性が減りますし。

from rgrb.

ochaochaocha3 avatar ochaochaocha3 commented on July 28, 2024

@killist さん
ご意見ありがとうございます。下の例に近い感じでしょうか?

from rgrb.

killist avatar killist commented on July 28, 2024

「どちらか」と言えばそうかもしれません。
記載いただいている例はかなり物理的な意味集合に思えます。
「定数だけで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.

koi-chan avatar koi-chan commented on July 28, 2024

今回の問題提起は、でたとこサーガプラグインに日本語コマンドを実装する際に、DiceRollプラグインで定義されている定数を流用できないかと思って行いました。
しかし、実際には微妙に必要となる定数(正規表現)が違ったため、流用する必要がありませんでした。
せっかく意見を寄せて頂いたのですが、今回はこの機能については実装を見送りたいと思います。

ちなみに個人的には、「ジェネレータ」「定数」という単位ではなく、プラグインを丸ごと使えるようにするのがいいかと思います。

@dice_roll = RGRB::Plugin::DiceRoll.new()
@dice_roll.dxx_dice('d66')
@dice_roll.const('NUM_RE')

このような書き方ができるような。

ですがこの方法、かなり実装が大変そうだというのが簡単に想像がつきます。その時必要な機能をまた考え直したほうが実情に合ったいいものができるでしょうから、実際に使うときが来るまで実装を見送ります。

from rgrb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.