Codegym University コースの一部としてのメンターによる講義の抜粋。フルコースにお申し込みください。


「もうここに来ましたか、アミーゴ? すでにたくさんの Java コマンドを学んでいると思います。もうすぐ私のレベルに達します!」

「それは本当ですか、ディエゴ?」

「もちろんそうではありません、ハハ。あなたにはまだやるべきことがたくさんあります。それでも、あなたはすでにかなり複雑なプログラムを書くのに十分な知識を持っています。プログラム内の 10、20、30 行のコードは、それほど大きなプログラムではありません。右?"

「おっしゃる通りだと思います。特に中括弧を別の行に置く場合はそうです。」

「しかし、100 行以上のプログラムは、今や大きなものです。私たちロボットでさえ、そのようなコードを理解するのは非常に困難です。どう思いますか。大量のコードを含むプログラムの作成と読み取りを何らかの方法で簡素化するために何かできることはありますか?」

「そう願っています!」

「あなたの希望は無駄ではありません。プログラムを簡素化することは可能であり、これを助けるメソッドがここにあります。それらは関数と呼ばれることもあります。

「関数、メソッド……えっと、何ですか?」

「非常に簡単に言うと、メソッドとは、一意の名前を持つコマンドのグループです。言い換えれば、いくつかのコマンドを 1 つのグループにまとめ、一意の名前を付けるだけです。これで、メソッドが完成しました。ほとんどの多くの場合、これらのコマンドは、小規模で特定のタスクを解決するために、何らかの理論的根拠に従ってグループ化されます (たとえば、「ファイルから行を出力するメソッド」や「数値を指数に累乗するメソッド」など)。

「では、プログラムをメソッドに分割したということでしょうか?」

「はい、コードが簡素化されます。

例:

メソッドなしで メソッド付き
class Solution
{
   public static void main(String[] args)
   {
     System.out.print("Wi-");
     System.out.println("Fi");
     System.out.print("Wi-");
     System.out.println("Fi");

     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void main(String[] args)
   {
     printWiFi();
     printWiFi();
     printWiFi();
   }
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}

「左側の列のプログラムでは、同じコードを 3 回繰り返しています。これは、要点を説明するために意図的に行っています。しかし、右側のプログラムでは、繰り返されたコードを別のメソッドに移動し、一意の名前を付けています。printWiFi

そして、再配置されたコードの代わりに、printWiFi()メソッドを 3 回呼び出します。

「右の列のプログラムを実行すると、メソッドがprintWiFi()実行されるたびに、メソッド内のすべてのコマンドprintWiFi()が実行されます。複数のコマンドを 1 つのグループに結合して、新しいコマンド (メソッド) を作成しただけです。

「どんなコードも別々のメソッドに分割できます。これは物事を単純化するために行われます。つまり、大きなメソッドを 1 つ持つよりも小さなメソッドを多数持つほうが良いという考えです。

「プログラムをメソッドに分割するのは素晴らしいアイデアです。

「すぐに、自分でメソッドを作成せずにプログラムを書いていたことを不思議そうに思い出すでしょう。」

「私は聞いてメソッドを書く準備ができています! やり方を教えてください。」

Javaでメソッドを宣言する

「最も単純なメソッドを宣言するにはどうすればよいでしょうか?その方法は次のとおりです。

public static void name()
{
  method body
}

ここでname、 はメソッドの一意の名前で、method bodyメソッドを構成するコマンドを表します。publicstatic、 という単語の意味についてvoidは後で説明します。

「メソッドを作成したら、他のメソッドでそれを呼び出すことができます。メソッド呼び出しは次のようになります。

name();

name呼び出したいメソッドの一意の名前、つまり、メソッド呼び出しに到達したときに実行したいコマンドのメソッドです。

「プログラムがメソッド呼び出しに到達すると、プログラムは単にメソッドにステップインし、すべてのコマンドを実行し、元のメソッドに戻って実行を継続します。

「それでは、アミーゴ、あなたがすでに学んだコマンドを新しい目で見てください。たとえば、 。これが実際に何であるかについて、何か思い当たることはありますか?」System.out.println()

「これらのコマンドはすべて、他のプログラマによって書かれたメソッドにすぎないということですか?」

「すべてではありませんが、その多くはそうです。その通りです。他の人たちは、私たちの生活を楽にするためにそれらを書きました。」

「それpublic static void main(String[] args)も一つの方法です...今ではもっと意味が分かります!」

「もちろん、そうです! それはプログラミングです! メイン メソッド (プログラムのアルファとオメガ) には、他のメソッドへの呼び出しを含めることができることがわかりました。

コード ノート
class Solution
{
   public static void main(String[] args)
   {
     printWiFi10Times();
   }

   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}




print10TimesWiFi()メソッドを呼び出しますメソッドを


宣言します ループ内でメソッド 10 を 呼び出しますメソッドを 宣言します画面に 「 」を表示しますprint10TimesWiFi


printWiFi()


printWiFi

Wi-Fi

メソッドに関する事実

「メソッドに関するいくつかの有益な事実を皆さんのために脇に置いておきました。ここでは、以下をお楽しみください。

事実 1.メソッドは常にクラスの一部です。

メソッドはクラス内でのみ宣言できます。メソッドを別のメソッド内で宣言することはできません。メソッドはクラスの外で宣言できません。

事実 2.メソッドの名前には神聖な意味はありません

どのメソッドが呼び出されるかは問題ではありません。それは何も影響しません。main メソッドは、他のすべてのメソッドと同様のメソッドです。この名前は、Java マシンがプログラムの実行を開始するメソッドとして選択されただけです。それには魔法のようなものは何もありません。そうは言っても、少なくともその目的がある程度明確になるメソッド名を選択することをお勧めします。これについては少し後で話します。

事実 3.クラス内のメソッドの順序は重要ではありません

クラス内にメソッドを任意の順序で記述できます。これはプログラムの実行にはまったく影響しません。例:

コード
class Solution
{
   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   
   public static void main(String[] args)
   {
     printWiFi10Times();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }

   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   public static void main(String[] args)
   {
     printWiFi10Times();
   }
}

事実 4. 1 つのメソッド内の変数は、他のメソッドの変数とはまったく関連していません。

ラスベガスで起こったことはラスベガスに残ります。また、メソッド内で宣言された変数はメソッド内に残ります。

同じ名前の変数を 2 つの隣接するメソッドで宣言できますが、これらの変数は相互に関連しません。

メソッド名

「それで...メソッド名について話すと約束しました。プログラミングで最も難しい 2 つの問題は、メソッドの正しい名前を選択することと、変数の正しい名前を選択することであることは長い間知られていました。」

「こんなに難しいとは思わなかった!」

「あなたは、変数やメソッドに任意の名前が付けられている、他人のあいまいなコードについてあまり知りませんでした。そのコードを理解してみてください。実際、メソッドに正しく名前を付ける方法に関しては、ほぼ完全な科学が出現しています。そして、それぞれのプログラミング言語には、独自の基準。

「Java では、次の原則に従うのが通例です。

原則 1.メソッド名は、そのメソッドが何を行うのかを簡潔に説明する必要があります。

そうすれば、コードを読む別のプログラマは、メソッドの名前を頼りに、コードが何を行うかを推測できます。呼び出されるメソッドのコードを毎回確認する必要はありません。また、メソッドの目的も覚えやすくなります。

たとえば、「プログラムをスリープさせる」ために使用され、「次の整数を読み取る」ために使用されます。便利ですね。Thread.sleep()Scanner.nextInt()

原則 2.メソッド名は複数の単語にすることができます。

ただし、これを行う場合にはいくつかの制限があります。

  • メソッド名にスペースを含めることはできません。すべての単語が一緒に書かれます。
  • 最初の単語を除いて、各単語は大文字で表記されます。
  • メソッド名は常に小文字で始まります

方法を覚えておいてくださいprint10TimesWiFi。その名前はどういう意味ですか?「『WiFi』という単語を10回表示します」。メソッドの名前には多くの単語を含めるべきではありません。名前はその本質そのものを反映している必要があります。

この命名方法の標準は、キャメルケース (大文字はラクダのこぶに似ています) と呼ばれます。

原則 3.メソッド名は動詞で始まります。

メソッドは常に何かを実行するため、メソッド名の最初の単語は常にアクションになります。

以下に、メソッドの不適切な名前をいくつか示します。homecatcartrain、 ...;

良い名前は次のとおりです: runexecuteprintreadwrite...

原則 4.メソッド名にはラテン文字と数字のみを使用します。

Java はさまざまな言語に対する優れたサポートを備えています。変数、メソッド、クラスの名前は中国語だけでなくロシア語でも書くことができます。すべてうまくいきます。

しかし!System.out.println()Javaのメソッドが中国語で書かれていた場合、どれくらいの時間をかけて Java を勉強する必要があるか想像してみてください。

今よりずっと長いですよね?それが最初のポイントです。

第二に、ソフトウェア開発チームの多くは国際的です。非常に多くの Java ライブラリが世界中のプログラマによって使用されています。

したがって、メソッド名にはラテン文字と数字のみを使用することをお勧めします。

重要:

メソッドの名前は文字で始める必要があります (数字で始めることはできません)。

「これらはすべて、Java でのメソッドの命名を管理する基本原則です。レッスンはもう終わりです。タスクを解決してください!」

「もう走ってますよ、ディエゴ!」


Codegym University コースの一部としてのメンターによる講義の抜粋。フルコースにお申し込みください。