Codegym University 과정의 일부로 멘토와 함께하는 강의 스니펫. 전체 과정에 등록하십시오.


"벌써 왔어, 아미고? 이미 많은 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메서드를 구성하는 명령을 나타냅니다. 단어 public, static, 및 의 의미는 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. 메서드 이름에는 신성한 의미가 없습니다.

어떤 메서드가 호출되는지는 중요하지 않습니다. 아무 것도 영향을 미치지 않습니다. 주요 방법은 다른 모든 것과 같은 방법입니다. 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 University 과정의 일부로 멘토와 함께하는 강의 스니펫. 전체 과정에 등록하십시오.