Đoạn trích bài giảng với người cố vấn trong khóa học của Đại học Codegym. Đăng ký cho khóa học đầy đủ.


"Bạn đã ở đây chưa, Amigo? Tôi biết bạn đã học được rất nhiều lệnh Java. Bạn đã gần đạt đến trình độ của tôi!"

“Có thật không Diego?”

"Tất nhiên là không, ha-ha. Bạn vẫn còn nhiều việc phải học và học. Tuy nhiên, bạn đã biết đủ để viết các chương trình khá phức tạp. 10, 20, 30 dòng mã trong một chương trình không phải là một chương trình quá lớn, Phải?"

"Tôi đoán bạn đúng. Đặc biệt là nếu bạn đặt dấu ngoặc nhọn trên các dòng riêng biệt."

"Nhưng một chương trình hơn 100 dòng, bây giờ nó lớn. Ngay cả robot của chúng ta cũng gặp khó khăn trong việc hiểu mã như vậy. Bạn nghĩ gì, bạn có thể làm gì để bằng cách nào đó đơn giản hóa việc viết và đọc các chương trình có nhiều mã không?

"Tôi chân thành hy vọng như vậy!"

"Hy vọng của bạn không phải là vô ích. Có thể đơn giản hóa các chương trình và các phương pháp ở đây để giúp chúng tôi thực hiện điều này. Đôi khi chúng được gọi là các hàm .

"Chức năng, phương pháp ... Uh, chúng là gì?"

"Nói một cách đơn giản, một phương thức là một nhóm các lệnh có một tên duy nhất . Nói cách khác, chúng ta chỉ cần đặt một số lệnh vào một nhóm và đặt cho nó một tên duy nhất. Và thế là xong — bùm — chúng ta có một phương thức. thông thường, các lệnh này được nhóm theo một số lý do để giải quyết một nhiệm vụ nhỏ và cụ thể, chẳng hạn như 'phương pháp in các dòng từ tệp' hoặc 'phương pháp nâng một số lên số mũ'.

"Vì vậy, chúng tôi chia chương trình thành các phương pháp?"

"Có, và nó đơn giản hóa mã.

Ví dụ:

Không có phương pháp Với một phương pháp
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");
   }
}

"Trong chương trình ở cột bên trái, chúng tôi lặp lại cùng một mã ba lần — chúng tôi cố tình làm điều này để minh họa một điểm. Nhưng trong chương trình ở bên phải, chúng tôi đã chuyển mã lặp lại thành một phương thức riêng biệt và đặt cho nó một tên duy nhất — printWiFi.

Và thay vì mã được di chuyển, chúng tôi gọi printWiFi()phương thức 3 lần.

"Khi chương trình ở cột bên phải được chạy, mỗi khi phương printWiFi()thức được thực thi, tất cả các lệnh bên trong printWiFi()phương thức đều được thực hiện. Chúng tôi vừa tạo một lệnh (phương thức) mới, kết hợp nhiều lệnh thành một nhóm duy nhất.

"Bất kỳ mã nào cũng có thể được chia thành các phương thức riêng biệt. Điều này được thực hiện để đơn giản hóa mọi thứ: ý tưởng là có nhiều phương thức nhỏ sẽ tốt hơn là một phương thức lớn.

"Đó là một ý tưởng tuyệt vời để chia chương trình thành các phương thức.

"Bạn sẽ sớm nhớ lại với sự ngạc nhiên về cách bạn đã từng viết chương trình mà không tạo ra phương pháp của riêng mình."

"Tôi sẵn sàng lắng nghe và cố gắng viết các phương pháp! Chỉ cần cho tôi biết cách thực hiện."

Khai báo một phương thức trong Java

"Làm thế nào chúng ta có thể khai báo phương thức đơn giản nhất? Đây là cách thực hiện:

public static void name()
{
  method body
}

Đâu namelà tên duy nhất của phương thức và method bodyđại diện cho các lệnh tạo nên phương thức. Ý nghĩa của các từ public, static, và voidsẽ được thảo luận sau.

"Sau khi chúng tôi đã tạo một phương thức, chúng tôi có thể gọi nó trong các phương thức khác của chúng tôi. Một cuộc gọi phương thức trông như thế này:

name();

"Đâu namelà tên duy nhất của phương thức mà chúng ta muốn gọi, tức là phương thức có các lệnh mà chúng ta muốn thực hiện khi đến lệnh gọi phương thức.

"Khi chương trình đến lệnh gọi phương thức, nó sẽ chỉ bước vào phương thức, thực hiện tất cả các lệnh của nó, quay lại phương thức ban đầu và tiếp tục thực hiện.

"Và bây giờ, Amigo, hãy nhìn bằng con mắt mới vào các lệnh mà bạn đã học. Ví dụ, . Bạn có nghĩ ra điều gì liên quan đến điều này thực sự là gì không?"System.out.println()

"Bạn đang nói rằng tất cả các lệnh này chỉ là phương pháp được viết bởi các lập trình viên khác?"

"Không phải tất cả, nhưng rất nhiều trong số chúng. Vâng, chính xác! Những người khác đã viết chúng để làm cho cuộc sống của chúng ta dễ dàng hơn."

"Như vậy public static void main(String[] args)cũng là một phương pháp. . . Bây giờ càng có ý nghĩa!"

"Tất nhiên là có! Đó là lập trình! Hóa ra phương thức chính — alpha và omega của chương trình — có thể chứa các lệnh gọi đến các phương thức khác:

Mã số Ghi chú
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");
   }
}




Chúng tôi gọi print10TimesWiFi()phương thức


Chúng tôi khai báo print10TimesWiFiphương thức


Chúng tôi gọi printWiFi() phương thức 10 trong một vòng lặp


Chúng tôi khai báo printWiFiphương thức

Chúng tôi hiển thị " Wi-Fi" trên màn hình

Sự thật về phương pháp

"Tôi đã dành một số sự thật hữu ích về các phương pháp cho bạn. Tại đây, hãy tận hưởng:

Sự thật 1. Một phương thức luôn là một phần của một lớp.

Một phương thức chỉ có thể được khai báo trong một lớp. Một phương thức không thể được khai báo bên trong một phương thức khác. Một phương thức không thể được khai báo bên ngoài một lớp.

Sự thật 2. Tên của một phương thức không có ý nghĩa thiêng liêng

Phương pháp nào được gọi không quan trọng — điều đó không ảnh hưởng gì cả. Phương thức chính là một phương thức giống như tất cả các phương thức khác. Chỉ là tên này đã được chọn cho phương thức mà từ đó máy Java sẽ bắt đầu thực thi chương trình. Không có gì kỳ diệu về nó. Tất cả những gì đã nói, tốt hơn là chọn tên phương thức ít nhất làm cho nó rõ ràng một chút về mục đích của chúng. Tôi sẽ nói về điều này một lát sau.

Sự thật 3. Thứ tự của các phương thức trong một lớp không quan trọng

Bạn có thể viết các phương thức của mình trong một lớp theo bất kỳ thứ tự nào — điều này sẽ không ảnh hưởng đến việc thực thi chương trình theo bất kỳ cách nào. Ví dụ:

Mã số
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();
   }
}

Sự thật 4. Các biến bên trong một phương thức không liên quan theo bất kỳ cách nào với các biến của các phương thức khác

Chuyện gì xảy ra ở Vegas, hãy ở lại Vegas. Và các biến được khai báo bên trong một phương thức sẽ ở bên trong phương thức đó.

Các biến có cùng tên có thể được khai báo theo hai phương thức liền kề và các biến này không liên quan đến nhau theo bất kỳ cách nào.

Tên phương thức

"Vậy... Tôi đã hứa sẽ nói cho bạn biết về tên phương thức. Từ lâu, người ta đã biết rằng hai vấn đề khó khăn nhất trong lập trình là chọn đúng tên cho phương thức và chọn đúng tên cho biến."

"Tôi chưa bao giờ nghĩ rằng điều đó lại khó khăn như vậy!"

"Bạn chỉ không biết nhiều về mã mơ hồ của người khác, trong đó các biến và phương thức có tên tùy ý. Chỉ cần cố gắng tìm ra mã đó. Trên thực tế, gần như toàn bộ khoa học đã xuất hiện về cách đặt tên chính xác cho phương thức. Và mỗi ngôn ngữ lập trình đều có tiêu chuẩn riêng của mình.

"Ở Java, thông thường tuân theo các nguyên tắc sau:

Nguyên tắc 1. Tên phương thức nên mô tả ngắn gọn nhiệm vụ của phương thức đó.

Sau đó, một lập trình viên khác đọc mã của bạn có thể dựa vào tên của phương thức để đoán xem mã đó làm gì. Anh ấy hoặc cô ấy sẽ không cần phải xem mã của các phương thức được gọi mỗi lần. Và mục đích của các phương pháp dễ nhớ hơn.

Ví dụ: được sử dụng để 'đặt chương trình vào chế độ ngủ' và được sử dụng để 'đọc số nguyên tiếp theo'. Tiện nhỉ?Thread.sleep()Scanner.nextInt()

Nguyên tắc 2. Tên phương thức có thể là nhiều từ.

Tuy nhiên, có một số hạn chế khi làm điều này:

  • Bạn không thể có khoảng trắng trong tên phương thức: tất cả các từ được viết cùng nhau.
  • Mỗi từ được viết hoa, ngoại trừ từ đầu tiên.
  • Tên phương thức luôn bắt đầu bằng một chữ thường

Ghi nhớ print10TimesWiFiphương pháp. Cái tên đó có ý nghĩa gì? "Hiển thị từ 'WiFi' 10 lần". Bạn không nên bao gồm nhiều từ trong tên của một phương thức: tên phải phản ánh bản chất của nó.

Tiêu chuẩn cho các phương thức đặt tên này được gọi là CamelCase (Các chữ hoa giống như bướu của con lạc đà).

Nguyên tắc 3. Tên phương thức bắt đầu bằng một động từ.

Một phương thức luôn làm một việc gì đó, vì vậy từ đầu tiên trong tên phương thức luôn là một hành động.

Dưới đây là một số tên xấu cho các phương thức: home, cat, car, train...;

Một số tên hay là: run, execute, print, read, write, ...

Nguyên tắc 4. Tên phương thức chỉ sử dụng các chữ cái và số Latinh.

Java có hỗ trợ tuyệt vời cho các ngôn ngữ khác nhau. Bạn có thể viết tên biến, phương thức và lớp bằng tiếng Nga cũng như tiếng Trung — mọi thứ sẽ hoạt động!

Nhưng! Hãy tưởng tượng bạn sẽ phải học Java trong bao lâu nếu System.out.println()phương pháp này được viết bằng tiếng Trung Quốc?

Lâu hơn nhiều so với bây giờ, phải không? Đó là điểm đầu tiên.

Thứ hai, nhiều nhóm phát triển phần mềm là quốc tế. Một số lượng rất lớn các thư viện Java được sử dụng bởi các lập trình viên từ khắp nơi trên thế giới.

Do đó, chỉ nên sử dụng các chữ cái và số Latinh trong tên phương thức.

Quan trọng:

Tên của một phương thức phải bắt đầu bằng một chữ cái (không thể bắt đầu bằng một số).

"Đây là tất cả các nguyên tắc cơ bản chi phối việc đặt tên phương thức trong Java. Giờ học đã kết thúc. Hãy giải quyết các nhiệm vụ!"

"Tôi đã chạy rồi, Diego!"


Đoạn trích bài giảng với người cố vấn trong khóa học của Đại học Codegym. Đăng ký cho khóa học đầy đủ.