teratail header banner
teratail header banner
質問するログイン新規登録
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

327閲覧

自作関数の中で別の自作関数を使う場合のリスクについて

pypanman

総合スコア15

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/05/25 01:59

編集2018/05/25 02:16

0

0

ご覧いただきありがとうございます。

質問ですが、自作関数(関数Aとする)の中で、別の自作関数(関数Bとする)を使う場合、
関数Bを変更・削除した場合、関数Aが動かなくなるリスクがあります。

下記のような場合だと、関数Aを削除すると、関数Bが動作しなくなります。

このようなリスクを防止するためには、どのような対策をするのが一般的なのでしょうか?

function A(num1, num2){ return num1 + num2; } function B(num){ var tmp = A(num, num); print(tmp); } function main(){ var magicNumber = 10; B(magicNumber); }

質問の意図ですが、ソースコードのマネジメント方法的なものを知りたい、といったところです。
例えば、「自作関数は言語に標準的に用意された関数やライブラリのみ使用するのが通例」といったルールがあれば教えて欲しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2018/05/25 02:00

具体的にどのような状況を想定しているのか、簡単なコード例を示して頂けるとわかりやすいと思います
fuzzball

2018/05/25 02:31

質問内容と、最後の「自作関数は言語に標準的に用意された関数やライブラリのみ使用するのが通例」の繋がりが分からないのですが。
HayatoKamono

2018/05/25 02:36

「関数Aを削除すると」について、もう少し詳しく教えて下さい。
guest

回答3

0

ベストアンサー

具体的なコードがないので、抽象的な回答になりますが、

そうなる、というのは、関数Bの動作に、関数Aの動作が関わっているからそうなるということです。
そうならないようにするには、関数Bを独立させ、関数Aの影響を受けないようにすればいいということになりますねー

投稿2018/05/25 02:05

y_waiwai

総合スコア88178

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pypanman

2018/05/25 02:19

ご回答ありがとうございます。 自作関数は、言語に標準的に用意された関数・ライブラリのみで構成するのが一般的なのでしょうか? まぁ、開発の規模によるのかもしれませんけど。
y_waiwai

2018/05/25 02:30

その開発中のソースで標準的に用意した変数、関数で構成すればいいのです。 そういう関数は、当然ながら、他が使用していることを考慮し、修正には考慮が必要となります。 気軽に削除したり修正するもんでもありません。 他の回答にもありますが、そういう標準的に使用する関数、変数は、気軽に修正できない/しないようにモジュールやクラスでまとめておく、ということをして管理しますねー そして、そのようなクラス/モジュールに手を入れる場合は、他の開発メンバーに周知し、承認をうけるような仕組みが必要となります
y_waiwai

2018/05/25 02:47

まー、自分ひとりでやってる場合は、関数を削除するリスクよりも、バグを仕込むリスクの方を気にするべきかと。 自分のプログラムは、自分が神様、すべては自分が作り出すもんですから。
guest

0

互いに依存関係にあるようなもの、外部の変数を共有するようなものはモジュールやクラスとしてまとめておき、その単位で責任を持って保守するとか、テストを書くとかするようにします。
あとはオブジェクト指向や関数型プログラミングの技法を使って、できるだけ結合が疎になるようにコードを書き、そういう事態に陥る可能性を減らしておくことで予防的に対策できます。

関数Aを変更・削除した場合、関数Bが動かなくなるリスクがあります。

AとBが逆なのでは。

投稿2018/05/25 02:07

hayataka2049

総合スコア30939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pypanman

2018/05/25 02:17

ご回答ありがとうございます。 >AとBが逆なのでは。 おっしゃる通りでございます。
hayataka2049

2018/05/25 02:32

ある程度は技法(オブジェクト指向・関数型・テスト駆動)でなんとかなりますが、使わなといけないライブラリの仕様で・・・とか他の人の書いたコードで・・・とかそもそも設計が・・・とか止むに止まれぬ場合もあるでしょうから、最後は注意と精神力、つまり気力です。 気力は大切なリソースなので、できるだけ無駄に消耗しないように工夫します。たとえば、言葉の説明ではBを削除する話をしているのに、コード例はAを削除する・・・というのは悪い例です。注意書きを書いても、それを見落とされたら困るので。 あとは、どうせ把握しきれないのでIDE等の支援に頼るという考え方もあります。削除したり変更したりした瞬間に「この関数が未定義で/型エラーでコンパイル/実行できなくなるよ」と言ってくれるものがあれば良い訳で。ただ、IDE頼り切りでけっきょく使いこなせない、というのも悲喜劇を産みかねないので、考えものですけど
guest

0

自作関数(関数Aとする)の中で、別の自作関数(関数Bとする)を使う場合、
関数Aを変更・削除した場合、関数Bが動かなくなるリスクがあります。

ありません。関数Bは、一般的には関数Aがなくても動作します。

投稿2018/05/25 02:03

maisumakun

総合スコア146656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pypanman

2018/05/25 02:17

ご回答ありがとうございます。 AとBが逆でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問