作為 Codegym 大學課程一部分的導師授課片段。報名參加完整課程。


“阿米戈,你已經來了嗎?我知道你已經學會了很多Java命令,你已經快到我的水平了!”

“是真的嗎,迭戈?”

“當然不是,哈哈。你還有很多學習和學習要做。不過,你已經知道足夠編寫相當複雜的程序了。一個程序中的10、20、30行代碼不是很大的程序,正確的?”

“我想你是對的。特別是如果你把大括號放在不同的行上。”

“但是一個 100 多行的程序,現在已經很大了。即使是我們機器人也很難理解這樣的代碼。你覺得呢,你能做些什麼來以某種方式簡化編寫和閱讀包含大量代碼的程序嗎?

“我真心希望如此!”

“你的希望沒有白費。簡化程序是可能的,這裡有方法來幫助我們。它們有時被稱為函數

“函數,方法……呃,是什麼?”

“簡單地說,一個方法就是一組具有唯一名稱的命令。換句話說,我們只是將幾個命令放入一個組中並為其指定一個唯一的名稱。就是這樣 - 砰 - 我們有一個方法。大多數通常,這些命令根據一些基本原理進行分組,以解決一個小而具體的任務。例如,“一種從文件中打印行的方法”。或者“一種將數字增加到指數的方法”。

“所以,我們把程序拆分成方法?”

“是的,它簡化了代碼。

例子:

沒有方法 用一個方法
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");
   }
}

“在左列的程序中,我們將相同的代碼重複三次——我們故意這樣做是為了說明一點。但在右列的程序中,我們將重複的代碼移到了一個單獨的方法中,並給它起了一個唯一的名字—— printWiFi.

而不是重新定位的代碼,我們調用該printWiFi()方法 3 次。

“右邊一欄的程序運行時,每次printWiFi()執行方法時,printWiFi()都會執行方法內部的所有命令。我們只是創建了一個新的命令(方法),將幾個命令組合成一個組。

“任何代碼都可以拆分成單獨的方法。這樣做是為了簡化事情:想法是擁有許多小方法比一個大方法更好。

“將程序拆分為方法是個好主意。

“很快你就會驚奇地回憶起你過去是如何在不制定自己的方法的情況下編寫程序的。”

“我準備好傾聽並嘗試編寫方法!告訴我怎麼做。”

在 Java 中聲明一個方法

“我們如何聲明最簡單的方法?方法如下:

public static void name()
{
  method body
}

其中name是方法的唯一名稱,method body代表組成該方法的命令。publicstatic和的含義void將在後面討論。

“創建方法後,我們可以在其他方法中調用它。方法調用如下所示:

name();

name我們要調用的方法的唯一名稱在哪裡,即當我們到達方法調用時,我們要執行其命令的方法。

“當程序到達方法調用處時,它會簡單地進入方法,執行它的所有命令,返回到原來的方法,並繼續執行。

“現在,阿米戈,用新的眼光審視你已經學過的命令。例如,。關於這到底是什麼,你有什麼想法嗎?”System.out.println()

“你是說這些命令都是其他程序員寫的方法?”

“不是全部,但是很多。是的,完全正確!其他人寫它們是為了讓我們的生活更輕鬆。”

public static void main(String[] args)也是一種方法……現在更有意義了!”

“當然,它確實如此!這是編程!事實證明,主要方法——程序的 alpha 和 omega——可以包含對其他方法的調用:

代碼 筆記
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()方法


我們聲明print10TimesWiFi方法我們 在循環中


調用方法 10 我們聲明方法 我們在屏幕上顯示“ ”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.一個方法中的變量與其他方法中的變量沒有任何關係

在維加斯發生的事情,留在維加斯。並且在方法內聲明的變量保留在方法內。

可以在兩個相鄰的方法中聲明同名變量,並且這些變量之間沒有任何關係。

方法名稱

“所以……我答應過給你講方法名的,早就知道編程中最難的兩個問題,一個是方法名,一個是變量名。”

“沒想到這麼難!”

“你只是不太了解其他人的模糊代碼,其中變量和方法具有任意名稱。只需嘗試找出該代碼。事實上,關於如何正確命名方法幾乎已經出現了一門完整的科學。並且每種編程語言都有自己的標準。

“在 Java 中,習慣上遵循這些原則:

原則 1.方法名應簡要描述該方法的作用。

然後另一個閱讀你的代碼的程序員可以根據方法的名稱來猜測代碼的作用。他或她不需要每次都查看被調用方法的代碼。而且這些方法的目的更容易記住。

例如,用於“讓程序進入休眠狀態”並用於“讀取下一個整數”。方便吧?Thread.sleep()Scanner.nextInt()

原則2.一個方法名可以是多個單詞。

但是,這樣做有幾個限制:

  • 方法名稱中不能有空格:所有單詞都寫在一起。
  • 每個單詞都大寫,除了第一個。
  • 方法名總是以小寫字母開頭

記住print10TimesWiFi方法。這個名字是什麼意思?“顯示‘WiFi’一詞 10 次”。你不應該在方法的名字中包含很多單詞:名字應該反映它的本質。

這種命名方法的標準稱為 CamelCase(大寫字母就像駱駝的駝峰)。

原則 3.方法名以動詞開頭。

一個方法總是做一些事情,所以方法名中的第一個詞總是一個動作。

以下是一些錯誤的方法名稱:home, cat, car, train, ...;

一些好的名字是:run, execute, print, read, write, ...

原則 4.方法名只能使用拉丁字母和數字。

Java 對不同的語言都有很好的支持。您可以用俄語和中文編寫變量、方法和類的名稱——一切都可以!

但!System.out.println()想像一下,如果方法是用中文寫的,你要學多少 Java ?

比現在長得多,對吧?這是第一點。

其次,許多軟件開發團隊是國際化的。全世界的程序員都在使用大量的 Java 庫。

因此,建議在方法名稱中僅使用拉丁字母和數字。

重要的:

方法名必須以字母開頭(不能以數字開頭)。

“這些都是管理 Java 中方法命名的基本原則。課程現在結束了。去解決任務吧!”

“我已經在跑了,迭戈!”


作為 Codegym 大學課程一部分的導師授課片段。報名參加完整課程。