intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tiếng Anh lập trình

Chia sẻ: Nguyen Cuong | Ngày: | Loại File: DOCX | Số trang:12

155
lượt xem
27
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu Tiếng Anh lập trình sau đây nhằm trình bày các quy tắc đặt tên biến, class, method đúng ngữ pháp tiếng Anh trong lập trình. Tài liệu hữu ích cho các bạn chuyên ngành Công nghệ thông tin đặc biệt là các lập trình viên và những ai quan tâm đến vấn đề trên.

Chủ đề:
Lưu

Nội dung Text: Tiếng Anh lập trình

  1. Cách đặt tên tiếng Anh của biến, class, method đúng  ngữ pháp khi code    Nhiều kỹ sư người Nhật (và cả kỹ sư Việt Nam ­ người dịch) không giỏi tiếng Anh lắm.  Chùm bài báo này nói sơ lược về mối quan hệ giữa ngữ pháp tiếng Anh và việc lập trình.  Riêng bài này nói về các quy tắc đặt tên biến, class, method đúng ngữ pháp tiếng Anh.    Khi dùng chuẩn tiếng Anh có thể giao tiếp dễ dàng với các kỹ sư nước ngoài (ví dụ trên  GitHub...). Chính tác giả nhờ thông qua GitHub mà được tuyển dụng vào 1 công ty của Mỹ.  Trong bài ký sự này,  thông qua việc giới thiệu một phần ảnh hưởng đó hy vọng có thể hữu  ích cho việc lập trình của độc giả. Nội dung 1. Tiếng Anh lập trình đơn giản 2. Điều quan trọng nhất là cần hiểu sự khác nhau giữa nội động từ và ngoại động từ    2­1 Nội động từ, ngoại động từ là gì?    2­2 Mối quan hệ giữ nội động từ, ngoại động từ với quy tắc đặt tên    2­3 Chú ý khi sử dụng nội động từ, ngoại động từ 3. Method dùng nội động từ    3­1 Câu loại 1 sử dụng tên method chính là object    3­2 Câu loại 2 sử dụng trong câu có chuỗi object. biến static 4. Method dùng nội động từ    4­1 Câu loại 3: chỉ ra object    4­2 Câu loại 4: Sử dụng kết hợp các object    4­3 Câu loại 5: sử dụng trong trường hợp muốn thay đổi trạng thái của object 5. Câu khẳng định cũng biến thành câu hỏi    5­1.Method trả lại dạng Boolean 6. Hiển thị thuộc tính (attributes)    6­1 Hiển thị danh từ + danh từ    6­2. Sử dụng giới từ trong tên method 1. Tiếng Anh lập trình đơn giản    Ngôn ngữ lập trình về cơ bản là dựa trên ngôn ngữ tự nhiên. Vì thế, cần hiểu được cơ  bản ngôn ngữ tự nhiên.    Có thể có nhiêu người nghĩ ngữ pháp tiếng Anh khó, nhưng thực sự, về cơ bản, trong lập  trình tiếng Anh được sử dụng một cách đơn giản. Trong code không dùng would, may,  might... cũng không cần biết về thì của động từ như hiện tại hoàn thành, quá khứ. Chẳng  may mà có ai đó dùng các cách viết tiếng Anh phức tạp sẽ gây khó hiểu cho người đọc nên  cần phải dùng tiếng Anh đơn giản khi code. 2. Điều quan trọng nhất là cần hiểu sự khác nhau giữa nội động từ và ngoại động từ    Khi chúng ta không biết từ nào đó, chúng ta có thể tra nghĩa trong từ điển. Ở từ điển, tiếng 
  2. Anh và tiếng Nhật (tiếng Việt) được trình bày dưới dạng bảng hash. Phần lớn các trường  hợp có thể tra từ và sử dụng đúng nhưng cũng có khi chỉ dựa vào nghĩa của 1 từ không thể  có cách sử dụng đúng. Hãy thử xem xét ví dụ sau: He ran a coffee shop: Anh ta kinh doanh quán cà phê He ran to a coffee shop: Anh ta đã chạy tới quán cà phê    Chỉ khác 1 giới từ to nhưng nghĩa đã khác hẳn nhau. Tại sao lại có sự khác biệt này. Là do  từ run đã được dùng dưới hai dạng là ngoại động từ và nội động từ khác nhau.    Nếu không phân biệt được cách dùng nội động từ và ngoại động từ, có thể sẽ dẫn tới  dùng sai. Vì thế khi tra 1 từ trong từ điển, chúng ta phải xem 1 động từ được dùng với tư  cách là nội động từ hay ngoại động từ. 2­1 Nội động từ, ngoại động từ là gì?    Vậy nội động từ, ngoại động từ là gì? Về mặt ngữ pháp, nội động từ là động từ dùng  trong câu chỉ cần có chủ ngữ (Subject) và động từ (Verb), tùy theo trường hợp có thể có  thêm phần phụ (Complement). Ngược lại, với ngoại động từ, ngoài chủ ngữ và động từ  nhất thiết phải có bổ ngữ (Object). Có 5 loại câu sau trong tiếng Anh Loại 1: Subject + Verb Loại 2: Subject + Verb + Complement Loại 3: Subject + Verb + Object Loại 4: Subject + Verb + Object + Object Loại 5: Subject + Verb + Object + Complement    Trong lập trình, chủ ngữ tương ứng với class hoặc object được instant hóa, bổ ngữ tương  ứng với object, phần phụ về cơ bản là không có thực thể, hầu như không có object được  instant hóa. Ở Java thì là ở primitive, các giá trị constant; ở Ruby thì thường là symbol. Động  từ đương nhiên là tên method. Tóm lại, nội động từ có thể xử lý hoàn toàn trên 1 object,  ngoại động từ cần xử lý trên 1 object và 1  hoặc 2 object khác với vai trò là biến. Nội động từ: run, wait, go(to...), become + status Chỉ cần 1 object là xử lý được Phần phụ là giá trị static hoặc được hiển thị dưới dạng symbol. Ngoại động từ: search + keyword, give (+ đưa cái gì đó ; + ai đưa cái gì đó), make (it...) Ngoài object tiến hành xử lý, cần object biến khác. 2­2 Mối quan hệ giữ nội động từ, ngoại động từ với quy tắc đặt tên Vậy sự khác biệt giữ nội động từ, ngoại động từ có quan hệ thế nào với quy tắc đặt tên  trong lập trình. Ví dụ, với ví dụ về động từ run ở trên, muốn viết một method để biết  [object của class Person @person có chạy đến quán cà phê không] thì thiết kế trên Ruby như  sau:    1 Class Person 2 def running?(to) 3 # xử lý 4 end 5 end Method này được dùng như sau:
  3. @person.running?(@coffee_shop) Nhìn qua thì có vẻ thiết kế đúng. Tuy nhiên code này khiến ta liên tưởng đến câu: Is the person running the coffee shop? hơn là  Is the person running to the coffee shop? Tóm lại, nếu thiết kế như thế này, người đọc code có thể hiểu nhầm là [object @person  quản lý @coffee_shop]. Để truyền đạt đúng ý đồ, nên thiết kế như sau: 1 class Person 2 def running_to?(place) 3 # xử lý 4 end 5   def running?(args = 6 {}) 7 place = args[:to] 8 running_to?(place) 9 end 10 end Với thiết kế này có thể viết code chính xác @person.running?(to: 1 @coffee_shop) Hoặc @person.running_to?(@coffee_shop) 2­3 Chú ý khi sử dụng nội động từ, ngoại động từ    Có thể trong thực tế lập trình gặp method Run không nhiều. Nhưng có thể gặp trường  hợp lẫn lộn giữa nội động từ và ngoại động từ. Khi code sử dụng ngôn ngữ lập trình hướng  đối tượng, trong software có nhiều tên class, method nên lỗi thiết kế như trên cũng dễ gặp. Trong trường hợp này, chỉ sử dụng từ điển là chưa đủ. Vì vậy nên từ bây giờ nên chú ý xem  từ tra được là nội động từ hay ngoại động từ. Điều này theo thời gian sẽ ảnh hưởng lớn  đến chất lượng code. Khi mở từ điển tra từ để code nên chú ý để làm thế nào viết được  code dễ hiểu. 3. Method sử dụng nội động từ 3­1 Câu loại 1 sử dụng tên method chính là object Cấu trúc trong Ruby như sau: 1 class Subject 2 def verb 3 # xử lý 4 end 5 end Ví dụ về sử dụng loại 1 là:
  4. ở xxxConverter hoặc xxxEncoder thực thi method #run ở class Worker hoạt động ở background, thực hi method #wait Method #close ở object dạng File  Method #run thực thi ở converter hoặc encoder bao gồm cả xử lý chuyển đổi, mã hóa. Ảnh  hưởng phần lớn dữ liệu là ở dạng cấu trúc, rất hiếm khi #run cần đối số. Object dạng file  về cơ bản sử dụng xong là phải gọi method #close. Đây là các ví dụ dùng dạng 1. Ví dụ, object @worker của class Worker thực thi method #wait ở class method của Worker  như sau: 1 @worker = Worker.new 2   # Worker ở trạng thái 3 đợi job 4 Worker.wait(@worker)        Nhìn qua thì có vẻ đúng nhưng code này lại trở thành [Class Worker đợi @worker]. Ngoài  ra Wait có nghĩa là [trì hoãn] nhưng nếu dùng với nghĩa trì hoãn, cần keep thời gian cho bổ  ngữ. Xử lý trên nếu viết đúng ngữ pháp tiếng Anh sẽ phải là:  1 @worker = Worker.new 2   # Worker ở trạng thái 3 đợi job 4 @worker.wait Cho phép đối số cần thiết ở method loại 1. Method dùng cấu trúc câu loại 1 dù không sử dụng đối số nhưng có nhiều trường hợp nó  muốn sử dụng đối số. Go hoặc Live là các từ hay được sử dụng nhất với dạng 1. Tuy vậy,  trong nhiều trường hợp, Các từ chỉ vị trí hay được dùng. He will go to Shibuya today. Does he live in the United States. Khi muốn biểu thị các câu trên bằng code, ta sẽ định nghĩa các method bằng tập hợp các  trạng từ chỉ vị trí.  Ví dụ, với 2 câu trên: # The person will go to 1 Shibuya. 2 @person.go_to(place) 3   # He lives in the united 4 states? @person.lives_in?("United 5 States")
  5. #go_to dùng với ý nghĩa động từ ở thời tương lai will nên không cần dùng s, #ives_in dùng  trong câu khẳng định dùng như câu hỏi nên có s.  Về method trả lại giá trị yes, no, tham  khảo thêm bài về method trả lại giá trị Boolean.    Ngoài ra, trong tiếng Anh, về cơ bản, sau giới từ là danh từ. Cũng có câu giới từ đứng cuối  câu nhưng trong lập trình hầu như là không có nên tạm bỏ qua. Nên đặt câu hỏi [nên sử  dụng giới từ gì]. Với Go có thể có nhiều khả năng như Go to hay Go for hay Go  through...Trong từ điển Nhật Anh có thể thấy nhiều trường hợp tùy theo loại của giới từ mà  ý nghĩa thay đổi. Trong thực tế sử dụng, cần chọn đúng giới từ. 3­2 Câu loại 2 sử dụng trong câu có chuỗi object biến static Loại 2 (S+V+C) có thêm 1 phụ tố cho động từ. Mối quan hệ giữa object và loại 2: Become(“hacker”), go(“crazy”) Cần đối số. Nhiều trường hợp giá trị thu được không phải là object. Trên phương diện ngữ pháp tiếng Anh, tính từ hoặc danh từ có thể làm phần phụ class 1 Subject def 2 verb(comple ment) 3 # xử lý 4 end 5 end        Có nhiều trường hợp phần phụ không phải là 1 thực thể, hiếm khi tại đối số thu được  object. Để biểu diễn một trạng thái cụ thể nào đó, có thể dùng chuỗi object hoặc biến static  nhưng không trả lại object được instant hóa. Ví dụ The person went crazy. The order just got shipped. The person became a wizard. Code Ruby sẽ trở thành @person.go(:crazy 1 ) @order.get(:shipp 2 ed) @person.become(:w 3 izard)    Từ code cũng có thể hiểu, có thể dùng động từ của cấu trúc loại 2 làm tên method trong  trường hợp method liên quan quan đến trạng thái. Hình dung về giới từ
  6.    Ở đây, đầu tiên định nghĩa method #go không có giới từ, ở phần trước [method loại 1 cho  phép đối số], định nghĩa method go_to. Nếu chỉ nhìn qua thì có thể nghĩ [chỉ việc có hay  không có giới từ dẫn tới cách hiểu thay đổi, có khi khó hiểu hơn]. Tuy nhiên, trong tiếng  Anh, ta thấy nhiều trường hợp, chỉ với giới từ, nghĩa của câu thay đổi hẳn. Nếu chỉ dùng từ  đơn Go có nghĩa là [đi], thì sẽ hiểu sai câu sau: He went crazy due to the bug Anh ta phát điên vì bug.    Với người native tiếng Anh, có thể phân biệt ngay việc dùng hay không giới từ. Theo đó  sẽ không bị nhầm Go hay Go to. Với người Nhật, giới từ là một khái niệm xa lạ nên cần  thử và sai. Ngoài ra, gần như cũng không có việc dịch trực tiếp giới từ trong tiếng Nhật.  Giới từ được sử dụng nhiều nên không cần cover hết nhưng việc hình dung về giới từ là rất  quan trọng. 4. Method dùng nội động từ Từ phần này giải thích về việc dùng nội động từ cho tên method. Nội động từ là động từ  mà sau đó cần có bổ ngữ. Ngoại động từ thì chỉ cần 1 object được instant hóa nhưng nội  động từ cần thêm 1 hoặc 2 object. Nó được thể hiện trong đối số của ngôn ngữ lập trình  hướng đối tượng. Tùy theo từng loại câu, sẽ giải thích cách thiết kế method. 4­1 Câu loại 3: chỉ ra object Câu loại 3 (S+V+O),cần 1 object. buy(item) attack(enemy) Cần đối số Giá trị trả về về cơ bản là object Trong ngôn ngữ lập trình hướng đối tượng, bổ ngữ trong đa số trường hợp là object trong  lập trình. Kiểu như ví dụ sau rất nhiều: class 1 Subject def 2 verb(object ) 3 # xử lý 4 end 5 end 6   @worker.per 7 form(:calcu lation) @person.say 8 ("Hell o!") 9 @person.buy
  7. (@item)    Trong tên của method trả lại 1 object ở đối số, sử dụng động từ loại 3. Loại câu này rất phổ biến  trong lập trình, mọi người sử dụng nhiều mà không biết.    Vì cần sử dụng nhiều nên không thể không chú ý. Trong tiếng Anh, có nhiều động từ sử dụng các  mẫu câu khác nhau, như trong ví dụ trên nếu chỉ dùng 1 từ Run sẽ dẫn đến nhập nhằng. Muốn hiểu rõ  thì hãy mở từ điển ra  xem có phải động từ thuộc loại câu 3, đã sử dụng đúng chưa. 4­2 Câu loại 4: Sử dụng kết hợp các object Câu loại 4( S+V+O1+O2), cần 2 bỗ ngữ cho động từ give him the item Trong 2 object, có 1 object làm nhiệm vụ trao đổi Cần 2 đối số đều là object Ví dụ tiêu biểu của loại 4 là động từ Give. Trong lập trình hướng đối tượng, trong 2 object, có trao đổi 1  object. Điều này phù hợp với câu loại 4.   class 1 Subject def 2 verb(object 1, object2) 3 # xử lý 4 end 5 end Ví dụ tiêu biểu trong khi code thực tế là: Có 1 user gửi tiền cho user khác bằng method #send hoặc #pay Có 1 user gửi item cho user khác bằng method #give 2 hoạt động trên được thực thi bởi method #buy Trong những năm gần đây, việc trao đổi trên internet phát triển mạnh mẽ. Trao đổi chuyển tiền trong  ngân hàng, chuyển point, item trong social game...nên có rất nhiều xử lý phù hợp với kiểu câu này. Tiếp theo giới thiệu method #buy được nói ở trên. Động từ buy ngoài cách dùng theo mẫu câu 3 có thể dùng theo mẫu câu 4. Ví dụ The user will buy the user’s friend the item. Viết trong code Ruby là @user.buy(@friend, @item) So sánh với cách dùng trong câu loại 3, trong câu này chúng ta hy vọng diễn đạt object @friend sở hữu @item object @user không sở hữu @item nhưng phải trả tiền Như thế có thể gộp rất gọn code. Ngoài ra việc có thể định nghĩa method #buy theo nhiều mẫu câu  được thể hiện trong Java ở việc định nghĩa nhiều loại method, trong Ruby là việc có thể định nghĩa  nhánh xử lý tùy theo class trong method. 4­3 Câu loại 5: sử dụng trong trường hợp muốn thay đổi trạng thái của object Câu loại 5 (S+V+O+C),động từ cần 1 bỗ ngữ, 1 phần phụ. make him crazy 1 object thay đổi trạng thái của 1 object khác.
  8. Giống như loại 2, biến Complement, hầu hết là dạng primitive chứ không phải là 1 object thực. class 1 Subject def verb(object 2 , complement) 3 # xử lý 4 end 5 end    Với mẫu câu này, trạng thái của object được thay đổi theo ý đồ của một object khác. Ví  dụ, method #name dùng cho 1 user đặt tên cho server. Loại câu này vì có cách sử dụng giống  loại 2 nên không được sử dụng nhiều trong lập trình. Ví dụ khi muốn thay đổi tên của server  có thể dùng setter nhưng phải dùng method kết hợp nhiểu mẫu câu, dẫn đến lãng phí. Vậy  dùng trong trường hợp nào? Theo tác giả là [khi muốn truy vết ai đó, làm cái gi] sẽ sử dụng  mẫu này.    Code của method #name @user.name(@server, "db­1")    Ở đây, object @user đặt tên cho object @server rất rõ ràng. Việc truy vết object user nào  đặt tên nào  cho object server nào trở nên rất dễ dàng, tiện lợi. 5. Câu khẳng định cũng biến thành câu hỏi    Chúng ta khi muốn chuyển câu khẳng đinh sang câu hỏi, nếu là động từ tobe thì đảo động  từ to be lên, nếu là động từ thường thì dùng trợ động từ do/does đầu câu. Dưới đây là 2 ví  dụ đơn giản: Does the array include 3? Is the user logged in? Ở đây, tùy theo ngữ điệu, có thể dùng câu khẳng định như câu hỏi. Ví dụ trên có thể chuyển  thành The array include 3? The user is logged in? Các mẫu này được dùng rất thường xuyên trong hội thoại hàng ngày. 5­1.Method trả lại dạng Boolean    Ở Ruby, tên method có dấu [?] ở cuối là method trả lại giá trị dạng Boolean. Ngoài ra,  trong Java, tên method là động từ thể khẳng định theo sau danh từ cũng tương tự trả lại true,  false. Ví dụ, user.isLoggedIn hoặc array.include?(3)    Rất dễ hiểu. Trong thực tế, Class Array của Ruby, các method giống như trong ví dụ này  được sử dụng nhiều trong các ứng dụng.
  9. Không sử dụng từ nối đầu is nếu không cần thiết    Ở đây có một chú ý. Hiện nay, có một xu hướng là thêm is vào đầu tên method trả lại giá  trị Boolean. Có người hiểu nhầm rằng bắt buộc phải thêm is vào trong trường hợp trả lại  true, false. Như thế dẫn đến trường hợp dùng is trong cả những chỗ không cần thiết. Is  được sử dụng phần lớn trong các trường hợp sau: [viết code dễ hiểu, gần câu văn tiếng  Anh], [câu khẳng định cũng theo ngữ điệu mà trở thành câu nghi vấn]. Trong thực tế, trong  Java, Iterator#hasNext hoặc HashMap#containsKey cũng là các method trả lại giá trị True,  False. Khi đó tùy theo hoàn cảnh mà cân nhắc xem có dùng is. 6. Hiển thị thuộc tính (attributes)    Ở các class, đa số các thuộc tính (attributes) được định nghĩa. Nếu suy nghĩ đặt tên của các  thuộc tính, có nguồn gốc từ nguồn gốc của cụm danh từ trong tiếng Anh, có thể tránh được  các tên gây khó chịu. Nếu có thể hiểu cụm danh từ được cấu trúc như thế nào cũng sẽ hữu  ích khi đọc code của 1 project bất kỳ. Cần chú ý tránh tên khó hiểu hoặc vô nghĩa. 6­1 Hiển thị danh từ + danh từ product name  Danh từ (object) + Danh từ (method) hash with indifferent access Danh từ (object) + giới từ + Danh từ (tên method) Ví dụ, có class Product có tên (name) và giá (price). Trong tiếng Anh có thể dùng The name of the product The name Hoặc dùng the product name Trong nhiều trường hợp trong ngôn ngữ lập trình hướng đối tượng ta viết theo thứ tự tên  class → method nên có thể định nghĩa method #name Thế trường hợp thiết kế method để lưu trữ nhập liệu từ user thì như thế nào? Thử nghĩ về  ví dụ class Blog Entry hiển trị từng bài blog. Ở BlogEntry lưu giữ tiêu đề và nội dung bài  viết nên có thể thiết kế như sau: class 1 BlogEntry 2 def title # trả lại 3 tiêu đề blog 4 end def 5 content # trả lại 6 nội dung blog 7 end 8 end
  10. Đến đây vẫn OK nhé. Nếu tiêu đề của blog là [English for engineers], làm thế nào để thiết kế method trả về [English For Engineers] (Viết hoa chữ cái đầu tiên của mỗi từ). Thử xem thiết kế sau: class 1 BlogEntry def 2 capitalized_t itle # Viết 3 hoa tiêu đề blog 4 end 5 end Nhìn qua thì thiết kế này cũng không vấn đề gì cả. Nhưng khi gọi method này blog_entry.capitalized_title sẽ có cấu trúc danh từ + tính từ + danh từ. Trong cụm danh từ, giữa 2 danh từ không thể có tính từ nên sẽ không đúng về phương diện tiếng Anh. Ngoài ra, nếu là method cần thiết cho class khác sẽ phải đị nh ngh ĩ a lại 1 method giống như vậy nên khi thực thi sẽ không phù hợp. Trong trường hợp này nên viết method #capitalize ở ngoài class def 1 capitalize(string) # trả lại viết 2 hoa chữ cái đầu của 1 chuỗi 3 end 4   capitalize(blog_ent 5 ry.title) Làm như thế sẽ thu được thuộc tính gần dạng với cấu trúc cụm danh từ. 6-2. Sử dụng giới từ trong tên method Ở đọa trên đã nói về dùng danh từ hoặc động từ ở đầu của tên method. Nhưng như trong ví dụ trên: hash with indifferent access, nếu dùng giới từ ở đầu sẽ dễ hiểu hơn. Ví dụ với các danh từ, cụm danh từ sau: An array An array without string values Có thể biểu diễn các cụm trên bằng method sau: def without_strings
  11. # bo cac gia 2 tri String, tra lai 3 end Sử dụng #without_strings nhu sau: array = ["Ruby", 2.0, "Java", 7, 1 "Python", 3.3] 2   3 array.without_strings # => [2.0, 7, 3.3] Đến đây vì động từ, danh từ, giới từ đều có thể được nên có thể có suy ngh ĩ rằng viết thế nào cũng được. Điều quan trọng khi đặt tên là đặt thế nào để dễ hiểu. Khi ngh ĩ đến việc dễ đọc, dễ hiểu sẽ dẫn đến kết quả là dùng danh từ hay động từ hay giới từ ở tên method. Dù có nhớ tên method là gì trong danh từ, động từ, giới từ cũng không có ý ngh ĩ a mà nên suy ngh ĩ làm thế nào để viết code dễ đọc khi đặt tên.
  12. Tóm lại, nếu không để ý đến tiếng Anh mà code thì không được à? Đến đây đã giải thích một số quan hệ giữa tiếng Anh và lập trình hướng đối tượng. Có nhiều cách diễn đạt nhưng ở đây nảy sinh ra một câu hỏi. Đó là [nếu không để ý đến tiếng Anh mà code thì không được à?] Thực ra không cần phải viết toàn bộ code như tiếng Anh. Muốn viết gần với tiếng Anh, sẽ cần phải đị nh ngh ĩ a rất nhiều method, kết quả là tác động đến 1 số lượng lớn class. Ngoài ra, về cách sử dụng nội động từ hay ngoại động từ có cách suy ngh ĩ cơ bản nên không cần chú ý quá nhiều. Về cách lập trình gần với ngữ pháp tiếng Anh, đó là người khác đọc có dễ hiểu không hoặc là người đang lập trình có thể viết với tâm trạng tốt không. Mọi người đọc entry này dù ít dù nhiều viết tên class, method với tâm trạng tốt, dễ hiểu là hạnh phúc của tác giả.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2