[Game Maker Adventure] Chương 006: Comment

Đừng thấy comment dễ mà ngó lơ!

Tóm tắt chương trước

Bạn quyết tâm tìm hiểu bí ẩn đằng sau giấc mơ kì lạ.

Tại sao lại có một “bạn” khác?

Kẻ đó đang cố nói gì vậy?

Hàng trăm câu hỏi bủa vây trong đầu nhưng bạn không thể nghĩ ra câu trả lời thoả đáng.

Bạn đành tiếp tục với cuốn Cổ thư để tìm hiểu thế giới này.

Kiến thức chương này

  • Comment là một tính năng nhỏ nhưng rất quan trọng.
  • Máy tính sẽ bỏ qua comment nhờ thế ta có thể sử dụng comment theo rất nhiều cách khác nhau: ghi chú, tóm tắt, bổ sung thông tin, bỏ qua các dòng code…
  • Comment cũng cần được đầu tư nội dung nhưng vẫn phải đảm bảo ngắn, gọn, đủ thông tin.

Cốt truyện

Cho tới thời điểm này, bạn đã học được một vài kĩ năng cơ bản.

Mặc dù vẫn chưa có gì đó hữu dụng nhưng quả thực bạn đã nắm được một chút về ma thuật của thế giới rồi.

Những câu thần chú (các statement) kể từ giờ sẽ ngày càng phức tạp, và không phải lúc nào ta cũng có thời gian để đọc lại hàng chục, hàng trăm, thậm chí hàng ngàn dòng.

Có một cách nào đó để “tóm tắt” lại nhanh những dòng đó.

Đó chính là comment!

***

*sột soạt*

Trong lúc đang say sưa với phần giới thiệu chương đầy hấp dẫn, bạn chợt nghe có tiếng động lạ ở bụi cây trước mặt.

Bạn cảnh giác, vơ vội một khúc cây nằm bên đường.

Dường như không có gì xảy ra cả.

Nhưng để an toàn, bạn quyết định nấp dưới một tảng đá gần đó.

Bạn không thể đi lại tự do trong rừng nếu không có một vài kĩ năng phòng thân.

Đó là lí do bạn phải ưu tiên học ma thuật. Cuốn cổ thư này chính là chìa khoá sống còn của bạn.

Comment là gì?

Comment là một tính năng cực kì hữu dụng khi code.

Trong khi tất cả những dòng code đều được viết theo các từ khoá của C# thì comment sẽ giúp bạn ghi chú tuỳ theo ý thích của bạn. Máy tính sẽ bỏ qua mà không chạy các dòng comment này.

Điều này rất quan trọng để giúp những người khác, hoặc chính bạn sẽ không phải mất thời gian đọc lại code để tìm hiểu đoạn code đó có tác dụng gì.

Tất cả những gì sau //, hoặc giữa /* và */ đều là comment.

//Day la comment

/*
Day cung la comment
Dong nay cung la comment
*/

// string message = "gamesnhalam";
Console.WriteLine("Hello, World!");

Chính bởi tính linh động như vậy, comment thường được dùng để:

  1. TODO (to do list – công việc phải làm).
  2. Tóm tắt đoạn code.
  3. Bổ sung thông tin.
  4. Tạm thời ẩn code để debug.

1. TODO

Sử dụng trong một số trường hợp bạn chưa muốn code chi tiết mà muốn lên dàn ý trước cho đoạn code của mình.

VD: nhân vật có 500 máu (hitPointLeft), giáp 150 (defendPoint). Sát thương nhận vào dmgReceived = 200.

Khi nhận sát thương, lượng sát thương đó sẽ được giảm bởi giáp.

Chẳng hạn công thức giảm sát thương là một công thức rất phức tạp và phải mất rất nhiều công sức để tính ra lượng sát thương nhận vào cuối cùng, bạn chưa muốn code công thức đó vội.

*Lúc này, bạn sẽ thêm comment //TODO: + nội dung.

int hitPointLeft = 500;
int defendPoint = 150;

int dmgReceived = 200;

//TODO: calculate dmgReceived after defend

hitPointLeft -= dmgReceived;

*TODO không phải là một từ khoá của C#, nó chỉ là một qui ước ngầm mà rất nhiều người sử dụng.

2. Tóm tắt đoạn code

Comment thường được sử dụng để tóm tắt một đoạn code nào đó. Thí dụ một đoạn code rất dài dưới đây:

int hitPointLeft = 500;
int defendPoint = 150;

int dmgReceived = 200;

//calculate dmgReceived after defendpoint
defendPoint -= 50;
int additionDef = defendPoint + 25;
int dmgMutilple = 2;
dmgReceived -= (additionDef - 50) * dmgMutilple;

hitPointLeft -= dmgReceived;

Giả sử việc tính dmgReceived rất phức tạp và không phải ai cũng có thời gian tìm hiểu, vì thế một dòng comment đã được thêm vào để báo với người đọc “phần này chỉ để tính dmgReceived thôi, không cần quan tâm tiểu tiết”.

3. Bổ sung thông tin

Cũng có một số trường hợp hiếm, bạn cần thêm link dẫn bên ngoài để hướng dẫn người đọc.

Đó chính là những gì khi bạn khởi tạo chương trình.

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

Phần link trong đoạn code trên có thể bấm được trong Visual Studio.

4. Tạm thời ẩn code

Do máy không bao giờ quan tâm đến comment nên chúng cũng được sử dụng như một phương pháp để máy tính bỏ qua một đoạn code nào đó.

Chẳng hạn

int hitPointLeft = 500;
int defendPoint = 150;

int dmgReceived = 200;

//calculate dmgReceived after defendpoint
//defendPoint -= 50;
//int additionDef = defendPoint + 25;
//int dmgMutilple = 2;
//dmgReceived -= (additionDef - 50) * dmgMutilple;

hitPointLeft -= dmgReceived;

Bằng cách này, bạn có thể so sánh đoạn code trước vào sau khi được comment. Thông thường chúng sẽ được dùng để debug.

Bạn có thể comment một hoặc nhiều dòng code trong Visual Studio bằng cách: bôi đen những dòng code bạn muốn, sau đó Ctrl + K rồi Ctrl + C.

Để “un-comment”, hãy bôi đen dòng code, sau đó Ctrl + K rồi Ctrl + U.

Cách viết comment

Cuối cùng, mục đích khi code là phải dễ đọc.

Dù bạn được quyền viết tuỳ thích trong comment nhưng những comment dài dòng, vô nghĩa, hoặc đơn giản là… cho vui sẽ khiến người khác rất khó theo dõi.

Thực ra không có qui định phải viết comment như thế nào, nhưng theo mình hãy viết comment tóm tắt những ý chính nhất và cố ngắn gọn nhất có thể.

Không nên comment như thế này:

int hitPointLeft = 500;
int defendPoint = 150;

int dmgReceived = 200;

//create more variables and add more magic number
defendPoint -= 50;
int additionDef = defendPoint + 25;
int dmgMutilple = 2;
dmgReceived -= (additionDef - 50) * dmgMutilple;

hitPointLeft -= dmgReceived;

Mình khuyên bạn nên viết comment thật chuẩn ngay từ ban đầu. Bởi khi “đẩy” code (push code) – hiểu đơn giản là gửi ra một bản cập nhật cho code của bạn – thì bạn sẽ phải viết nội dung của nó. Phần nội dung này là tóm tắt của bản cập nhật – hay chính xác là những gì bạn làm với các comment.

Đây là một thói quen cực tốt, thậm chí sẽ là một điểm cộng khi đi làm (nếu làm dev).

Quest: Sửa chữa ma thuật

Hàng ngàn năm qua đi, loài người ỷ lại vào những lõi ma tố, họ không còn quan tâm quá nhiều tới độ hiệu quả của những câu thần chú nữa.

Với họ, chỉ cần một lõi ma tố đủ mạnh thì họ có thể khởi động bất kì câu thần chú nào!

Chính vì thế, thần chú của nhân loại hầu hết đều rất khó đọc và kém hiệu quả.

Quest ✦✧✧✧✧

Hãy sửa đoạn code dưới đây, đồng thời thêm comment để chúng dễ đọcdễ hiểu nhất có thể.

string itemName1 = "Rope";
string itemName2 = "Torch";
string itemName3 = "Pick Axe";
string itemName4 = "Flint";
string itemDes1 = "Made of dragon twisted hair";
string itemDes2 = "Help you see in the darkness";
string itemDes3 = "What if a treasure right below your feet?";
string itemDes4 = "Use with woods to make campfire";

//use console to write
//Console.WriteLine("Please choose the item you wanna buy");
Console.Write("1. "); Console.Write(itemName1); Console.WriteLine(": " + itemDes1); //rope item
Console.Write("2. "); Console.WriteLine(itemName2); Console.WriteLine(": " + itemDes2); //torch
//for pick axe
Console.Write("3. "); 
Console.Write(itemName3); 
Console.WriteLine(": " + itemDes3);
Console.WriteLine("4. " + 
    itemName4 + ": "); //+ itemDes4);

Điều kiện hoàn thành:

  • Đoạn code có thể đọc dễ dàng.
  • Không có comment thừa.
  • Comment đủ ngắn và ý nghĩa.

*Kể từ chương này, một số Quest sẽ không có lời giải. Hãy tìm cách liên hệ với những ma thuật sư-senpai trong các cộng đồng để nhận sự trợ giúp nhé (^o^).

*Tip: trong phần comment sẽ có một phần gọi là Code Block </>, bạn có thể comment dưới dạng code block theo hướng dẫn bên dưới.

Chương Trước | Tổng quan | Chương Kế

Kurrwo

Công nhân👷gõ 💬 văn bản ⌨️ trò chơi 🎮 điện tử 📱 👏👏👏

Post navigation

Subscribe
Notify of
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Ngô Khang
//Item name
string itemName1 = "Rope";
string itemName2 = "Torch";
string itemName3 = "Pick Axe";
string itemName4 = "Flint";
//Item description
string itemDes1 = "Made of dragon twisted hair";
string itemDes2 = "Help you see in the darkness";
string itemDes3 = "What if a treasure right below your feet?";
string itemDes4 = "Use with woods to make campfire";


//Buy item menu (use console)
Console.WriteLine("Please choose the item you wanna buy");
Console.WriteLine("1. " + itemName1 + ": " + itemDes1); //Item 1 
Console.WriteLine("2. " + itemName2 + ": " + itemDes2); //Item 2 
Console.WriteLine("3. " + itemName3 + ": " + itemDes3); //Item 3
Console.WriteLine("4. " + itemName4 + ": " + itemDes4); //Item 4