タグ付けされた質問 「functions」

関数は、特定のタスクを実行するコードのブロックです。

5
長いメソッドのリファクタリング:そのままにするか、メソッドに分離するか、ローカル関数を使用する
私がこのような長い方法を持っているとしましょう: public void SomeLongMethod() { // Some task #1 ... // Some task #2 ... } このメソッドには、個別のメソッドまたはローカル関数に移動する必要がある繰り返し部分はありません。 長いメソッドはコードのにおいだと思っている人はたくさんいます(私を含めて)。また、私は#regionここで(s)を使用するのが好きではありません。なぜこれが悪いのかを説明する非常に人気のある答えがあります。 しかし、このコードをメソッドに分割すると public void SomeLongMethod() { Task1(); Task2(); } private void Task1() { // Some task #1 ... } private void Task2() { // Some task #1 ... } 次の問題が発生します。 単一のメソッドによって内部的に使用される定義でクラス定義スコープを汚染しているため、どこかに文書化する必要がTask1あり、そのTask2内部のみを対象としてSomeLongMethodいます(または、私のコードを読むすべての人がこのアイデアを推測する必要があります)。 単一のSomeLongMethodメソッド内で一度だけ使用されるメソッドの汚染IDEオートコンプリート(Intellisenseなど)。 このメソッドコードをローカル関数に分離すると …

3
別の関数から値を取得する関数は純粋と見なされますか?
副作用のない関数を作成するときにデフォルトの変数値を処理する方法を理解しようとしていますが、次のようになっています。 function getDefaultSeparator() { return ':'; } function process(input, separator) { var separator = separator || getDefaultSeparator(); // Use separator in some logic return output; } デフォルトのセパレーターは他の関数で使用され、1つの場所でのみ定義したいと思います。 これが純粋な関数である場合、代わりにグローバルDEFAULT_SEPARATOR定数を使用することとの違いは何ですか?

4
空の関数が必要な理由
私はpythonの学習を開始し、なぜプログラミング言語で空の関数が必要なのか疑問に思っています 例:python: def empty_func(): pass シェルスクリプトでも、空の関数空の関数を使用できます。 私の理解と質問: なぜプログラミング言語は空の関数を必要としたのですか?それは、プログラミング言語で遊んでいるだけなのか、それとも本当に重要なことなのか? これに目的がある場合、誰かがユースケースを説明したり、空の関数の使用法の実際の例を挙げたりできますか? または、空の関数を許可するプログラミング言語の伝統はありますか? 編集(私があなたの回答を読んで得たもの): スケッチアルゴリズムまたは抽象関数用 アクションなしでフォームを送信するために実行する必要があります いくつかの必須操作のプレースホルダー

4
「オブジェクトコンストラクター」は「名前が「object」の関数で、タイプが「object」を返す」の短い名前ですか?
つまり、関数とコンストラクタの呼び出しに違いがある以上に、単語を選択するということです。「オブジェクトのコンストラクタ」という名前のオブジェクトは、「名前をobject返す型を持つ関数」という名前でもかまいませんobject。 C ++では同じ関数と型名を使用できないと主張する人もいます。ただし、そのための回避策があります。C ++には特別な構文糖(コンストラクターと呼ばれます)があり、これを使用してobjecttypeを返す名前の関数を作成できますobject。ですから、コンストラクタは自立関数として見られ、使用できると思います。 ここに欠けている重要な意味上の違いはありますか?

6
動的スコープが役立つのはいつですか?
動的スコープを使用すると、呼び出し先は呼び出し元の変数にアクセスできます。疑似Cコード: void foo() { print(x); } void bar() { int x = 42; foo(); } 動的スコープをサポートする言語でプログラミングしたことがないので、動的スコープの実際のユースケースはどうなるのだろうと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.