【解決】リファクタのお願い:プラグインコマンドで同じパラメーター名を使いまわしたい

アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

【解決】リファクタのお願い:プラグインコマンドで同じパラメーター名を使いまわしたい

投稿記事by ムノクラ » 2020年10月02日(金) 08:27

試作品です。
https://github.com/munokura/MNKR-MZ-plu ... Command.js

これを拡張していく予定なのですが、コードの通り
variableID
variable
setup
を繰り返し使う事になりそうです。

let pluginName = "MNKR_VariableCommand";
の下に
let variableID = Number(args.variableID);
let variable = $gameVariables.value(args.variableID);
let setup = eval(args.setup);

と入れてみたのですが、argsに上手く追加できないでエラーになってしまいます。

このようなケースの簡略化方法がございましたら、ご指導いただきたく、お願いいたします。
最後に編集したユーザー ムノクラ on 2020年10月02日(金) 12:46 [ 編集 1 回目 ]

---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: リファクタのお願い:プラグインコマンドで同じパラメーター名を使いまわしたい

投稿記事by ムノクラ » 2020年10月02日(金) 10:31

https://github.com/munokura/MNKR-MZ-plu ... Command.js

関数化を思い出して、入れてみました。
一応動いているようですが、変な処理や書き方になっていないでしょうか?
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: リファクタのお願い:プラグインコマンドで同じパラメーター名を使いまわしたい

投稿記事by Plasma Dark » 2020年10月02日(金) 11:44

1回使ってそれきりではダメでしょうか。わざわざ variableID, variable, setup のスコープを広げる理由が見当たりません。

registerCommandに渡している関数の中だけでスコープを閉じてしまうほうが結果として見通しが良くなりそうです。

コード: 全て選択

PluginManager.registerCommand(pluginName, "addActor", args => {
  const actorID = $gameVariables.value(Number(args.variableID));
  const doSetup = args.setup === "true";
  if (actorID) {
    if (doSetup) {
      $gameActors.actor(actorID).setup(actorID);
    }
    $gameParty.addActor(actorID);
  }
});
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: リファクタのお願い:プラグインコマンドで同じパラメーター名を使いまわしたい

投稿記事by ムノクラ » 2020年10月02日(金) 12:46

Plasma Dark さんが書きました:1回使ってそれきりではダメでしょうか。わざわざ variableID, variable, setup のスコープを広げる理由が見当たりません。

registerCommandに渡している関数の中だけでスコープを閉じてしまうほうが結果として見通しが良くなりそうです。

コード: 全て選択

PluginManager.registerCommand(pluginName, "addActor", args => {
  const actorID = $gameVariables.value(Number(args.variableID));
  const doSetup = args.setup === "true";
  if (actorID) {
    if (doSetup) {
      $gameActors.actor(actorID).setup(actorID);
    }
    $gameParty.addActor(actorID);
  }
});


スコープについて下記記事を読みました。
https://techacademy.jp/magazine/25697

設計思想として、「スコープは狭めたほうがトラブルが防ぎやすく、メリットがなければ広げるべきではない」ということのようですね。

関数化したのは、シンプルに「同じことを何度も書かないで済む」のでメンテナンスもしやすいかな?と思ったのですが、浅知恵だったようです。
実直に1つずつ書いていくことにします。

下記進める前にご指導いただき、助かりました。
ありがとうございました。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。

“MZ:質問” へ戻る