Dòng mã php không được thực thi như một phần của chương trình là gì?

Hình minh họa mã nguồn Java với các chú thích mở đầu được biểu thị bằng màu đỏ và các chú thích nội tuyến có màu xanh lá cây. Mã chương trình có màu xanh lam

Trong lập trình máy tính, nhận xét là một lời giải thích hoặc chú thích mà lập trình viên có thể đọc được trong mã nguồn của chương trình máy tính. Chúng được thêm vào với mục đích làm cho mã nguồn dễ hiểu hơn đối với con người và thường bị các trình biên dịch và trình thông dịch bỏ qua. Các ngôn ngữ lập trình khác nhau thay đổi đáng kể

Nhận xét đôi khi cũng được xử lý theo nhiều cách khác nhau để tạo tài liệu bên ngoài mã nguồn bởi chính trình tạo tài liệu hoặc được sử dụng để tích hợp với hệ thống quản lý mã nguồn và các loại công cụ lập trình bên ngoài khác

Tính linh hoạt được cung cấp bởi các nhận xét cho phép có nhiều mức độ thay đổi, nhưng các quy ước chính thức cho việc sử dụng chúng thường là một phần của hướng dẫn phong cách lập trình

Tổng quan[sửa]

Nhận xét thường được định dạng là nhận xét khối (còn được gọi là nhận xét mở đầu hoặc nhận xét dòng) hoặc nhận xét dòng (còn gọi là nhận xét nội tuyến)

Chặn nhận xét một vùng mã nguồn có thể trải rộng trên nhiều dòng hoặc một phần của một dòng. Vùng này được chỉ định bằng dấu phân cách bắt đầu và dấu phân cách kết thúc. Một số ngôn ngữ lập trình (chẳng hạn như MATLAB) cho phép các chú thích khối được lồng vào nhau một cách đệ quy, nhưng những ngôn ngữ lập trình khác (chẳng hạn như Java) thì không

Nhận xét dòng bắt đầu bằng dấu phân cách nhận xét và tiếp tục cho đến cuối dòng hoặc trong một số trường hợp, bắt đầu ở một cột cụ thể (phần bù dòng ký tự) trong mã nguồn và tiếp tục cho đến cuối dòng

Một số ngôn ngữ lập trình sử dụng cả chú thích theo khối và theo dòng với các dấu phân cách chú thích khác nhau. Ví dụ: C++ có các chú thích khối được phân tách bằng

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
1 và
switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
2 có thể trải rộng trên nhiều dòng và chú thích dòng được phân cách bằng
switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
3. Các ngôn ngữ khác chỉ hỗ trợ một loại bình luận. Ví dụ: nhận xét của Ada là nhận xét theo dòng. họ bắt đầu bằng
switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
4 và tiếp tục đến cuối dòng

Cách tốt nhất để sử dụng các nhận xét có thể gây tranh cãi; . Có nhiều cách viết bình luận khác nhau và nhiều nhà bình luận đưa ra những lời khuyên trái ngược nhau

Lập kế hoạch và đánh giá[sửa | sửa mã nguồn]

Nhận xét có thể được sử dụng như một dạng mã giả để phác thảo ý định trước khi viết mã thực tế. Trong trường hợp này, nó nên giải thích logic đằng sau mã chứ không phải chính mã đó

/* loop backwards through all elements returned by the server 
(they should be processed chronologically)*/
for (i = (numElementsReturned - 1); i >= 0; i--) {
    /* process each element's data */
    updatePattern(i, returnedElements[i]);
}

Nếu loại nhận xét này được để lại, nó sẽ đơn giản hóa quy trình xem xét bằng cách cho phép so sánh trực tiếp mã với kết quả dự kiến. Một ngụy biện logic phổ biến là mã dễ hiểu sẽ làm những gì nó phải làm

Mô tả mã[sửa]

Nhận xét có thể được sử dụng để tóm tắt mã hoặc để giải thích ý định của lập trình viên. Theo trường phái tư tưởng này, việc trình bày lại mã bằng tiếng Anh đơn giản được coi là thừa;

"Đừng ghi lại mã xấu - hãy viết lại nó. "" Nhận xét tốt không lặp lại mã hoặc giải thích nó. Họ làm rõ ý định của nó. Nhận xét nên giải thích, ở mức độ trừu tượng cao hơn mã, những gì bạn đang cố gắng thực hiện. "

Nhận xét cũng có thể được sử dụng để giải thích lý do tại sao một khối mã dường như không phù hợp với quy ước hoặc thực tiễn tốt nhất. Điều này đặc biệt đúng với các dự án có rất ít thời gian phát triển hoặc sửa lỗi. Ví dụ

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")

Mô tả thuật toán[sửa]

Đôi khi mã nguồn chứa một giải pháp mới hoặc đáng chú ý cho một vấn đề cụ thể. Trong những trường hợp như vậy, các bình luận có thể chứa một lời giải thích về phương pháp. Những giải thích như vậy có thể bao gồm sơ đồ và bằng chứng toán học chính thức. Điều này có thể tạo thành lời giải thích về mã, thay vì làm rõ ý định của nó; . Điều này đặc biệt có thể đúng trong trường hợp các lĩnh vực vấn đề chuyên biệt cao;

Ví dụ: một lập trình viên có thể thêm nhận xét để giải thích lý do tại sao chọn kiểu chèn thay vì sắp xếp nhanh, vì theo lý thuyết, kiểu trước chậm hơn kiểu sau. Điều này có thể được viết như sau

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);

Bao gồm tài nguyên [ chỉnh sửa ]

Logo, sơ đồ và sơ đồ bao gồm các cấu trúc nghệ thuật ASCII có thể được chèn vào mã nguồn được định dạng dưới dạng nhận xét. Hơn nữa, thông báo bản quyền có thể được nhúng trong mã nguồn dưới dạng nhận xét. Dữ liệu nhị phân cũng có thể được mã hóa trong các nhận xét thông qua một quy trình được gọi là mã hóa nhị phân thành văn bản, mặc dù cách làm như vậy không phổ biến và thường được chuyển xuống các tệp tài nguyên bên ngoài

Đoạn mã sau đây là sơ đồ ASCII đơn giản mô tả luồng quy trình cho tập lệnh quản trị hệ thống có trong Tệp Windows Script chạy trong Windows Script Host. Mặc dù phần đánh dấu mã xuất hiện dưới dạng chú thích, nhưng sơ đồ thực sự xuất hiện trong phần CDATA XML, về mặt kỹ thuật được coi là khác biệt với chú thích, nhưng có thể phục vụ các mục đích tương tự


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

Mặc dù sơ đồ giống hệt này có thể dễ dàng được đưa vào làm chú thích, nhưng ví dụ này minh họa một trường hợp trong đó lập trình viên có thể chọn không sử dụng chú thích như một cách để đưa tài nguyên vào mã nguồn

Nhận xét trong chương trình máy tính thường lưu trữ siêu dữ liệu về tệp chương trình

Đặc biệt, nhiều nhà bảo trì phần mềm đưa ra các hướng dẫn gửi trong các nhận xét để giúp những người đọc mã nguồn của chương trình đó gửi lại bất kỳ cải tiến nào họ thực hiện cho nhà bảo trì.

Siêu dữ liệu khác bao gồm. tên của người tạo phiên bản gốc của tệp chương trình và ngày tạo phiên bản đầu tiên, tên của người bảo trì hiện tại của chương trình, tên của những người khác đã chỉnh sửa tệp chương trình cho đến nay, URL của

Khi một thuật toán trong một số phần của chương trình dựa trên mô tả trong sách hoặc tài liệu tham khảo khác, nhận xét có thể được sử dụng để cung cấp số trang và tiêu đề của cuốn sách hoặc Yêu cầu Nhận xét hoặc tài liệu tham khảo khác

Gỡ lỗi[sửa]

Một phương pháp phổ biến của nhà phát triển là nhận xét một đoạn mã, nghĩa là thêm cú pháp nhận xét khiến khối mã đó trở thành nhận xét, để nó không được thực thi trong chương trình cuối cùng. Điều này có thể được thực hiện để loại trừ một số đoạn mã nhất định khỏi chương trình cuối cùng hoặc (phổ biến hơn) nó có thể được sử dụng để tìm nguồn gốc của lỗi. Bằng cách nhận xét một cách có hệ thống và chạy các phần của chương trình, nguồn gốc của lỗi có thể được xác định, cho phép sửa lỗi đó

Nhiều IDE cho phép thêm hoặc xóa nhanh các nhận xét đó bằng các tùy chọn menu đơn hoặc tổ hợp phím. Lập trình viên chỉ cần đánh dấu phần văn bản muốn (bỏ) bình luận và chọn tùy chọn thích hợp

Tạo tài liệu tự động[sửa]

Các công cụ lập trình đôi khi lưu trữ tài liệu và siêu dữ liệu trong các bình luận. Chúng có thể bao gồm các vị trí chèn để bao gồm tệp tiêu đề tự động, các lệnh để đặt chế độ tô sáng cú pháp của tệp hoặc số sửa đổi của tệp. Những nhận xét kiểm soát chức năng này cũng thường được gọi là chú thích. Giữ tài liệu trong các nhận xét mã nguồn được coi là một cách để đơn giản hóa quy trình lập tài liệu, cũng như tăng khả năng tài liệu sẽ được cập nhật với những thay đổi trong mã

Ví dụ về trình tạo tài liệu bao gồm các chương trình Javadoc để sử dụng với Java, Ddoc cho D, Doxygen cho C, C++, Java, IDL, Visual Expert cho PL/SQL, Transact-SQL, PowerBuilder và PHPDoc cho PHP. Các dạng chuỗi tài liệu được hỗ trợ bởi Python, Lisp, Elixir và Clojure

C#, F# và Visual Basic. NET triển khai một tính năng tương tự được gọi là "Nhận xét XML" được IntelliSense đọc từ tệp đã biên dịch. lắp ráp NET

Phần mở rộng cú pháp[sửa]

Đôi khi các yếu tố cú pháp ban đầu được dự định là nhận xét được sử dụng lại để truyền đạt thông tin bổ sung cho chương trình, chẳng hạn như "nhận xét có điều kiện". Những "bình luận sôi nổi" như vậy có thể là giải pháp thiết thực duy nhất duy trì khả năng tương thích ngược, nhưng được nhiều người coi là một loại bùn

Chỉ thị sử dụng[sửa]

Có những trường hợp các ký tự bình luận bình thường được đồng chọn để tạo một chỉ thị đặc biệt cho người biên tập hoặc thông dịch viên

Hai ví dụ về việc chỉ đạo thông dịch viên này là

  • Unix "shebang" –
    switch (command) {
        case CMD_SHOW_HELP_AND_EXIT:
          do_show_help();
          /* Fall thru */
        case CMD_EXIT:
          do_exit();
          break;
        case CMD_OTHER:
          do_other();
          break;
        /* .. etc. .. */
      }
    
    5 – được sử dụng trên dòng đầu tiên của tập lệnh để trỏ đến trình thông dịch được sử dụng
  • "Nhận xét ma thuật" xác định mã hóa mà tệp nguồn đang sử dụng, e. g. PEP 263 của Python

Tập lệnh bên dưới cho hệ thống giống Unix hiển thị cả hai cách sử dụng này

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")

Tương tự như vậy là việc sử dụng các chú thích trong C để giao tiếp với một trình biên dịch rằng một "sự cố" mặc định trong một câu lệnh tình huống đã được thực hiện một cách có chủ ý

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }

Việc chèn một nhận xét

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
6 như vậy cho người đọc đã là một quy ước phổ biến, nhưng vào năm 2017, trình biên dịch gcc đã bắt đầu tìm kiếm những nhận xét này (hoặc các dấu hiệu khác về ý định có chủ ý) và nếu không tìm thấy, sẽ phát ra. "cảnh báo. tuyên bố này có thể thất bại"

Nhiều trình soạn thảo và IDE sẽ đọc các nhận xét được định dạng đặc biệt. Ví dụ, tính năng "modeline" của Vim;

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
2

Giảm căng thẳng[sửa]

Đôi khi các lập trình viên sẽ thêm nhận xét như một cách để giảm bớt căng thẳng bằng cách nhận xét về các công cụ phát triển, đối thủ cạnh tranh, nhà tuyển dụng, điều kiện làm việc hoặc chất lượng của chính mã. Có thể dễ dàng nhận thấy sự xuất hiện của hiện tượng này từ các nguồn trực tuyến theo dõi ngôn từ tục tĩu trong mã nguồn

Chế độ xem tiêu chuẩn [ chỉnh sửa ]

Có nhiều quan điểm quy chuẩn và ý kiến ​​lâu đời về việc sử dụng đúng các nhận xét trong mã nguồn. Một số trong số này là không chính thức và dựa trên sở thích cá nhân, trong khi một số khác được xuất bản hoặc ban hành dưới dạng hướng dẫn chính thức cho một cộng đồng cụ thể

Các chuyên gia có các quan điểm khác nhau về việc liệu và khi nào, nhận xét có phù hợp trong mã nguồn hay không. Một số khẳng định rằng mã nguồn nên được viết với ít bình luận, trên cơ sở mã nguồn phải tự giải thích hoặc tự ghi lại. Những người khác đề xuất mã nên được nhận xét rộng rãi (không có gì lạ khi hơn 50% ký tự không phải khoảng trắng trong mã nguồn được chứa trong các nhận xét)

Giữa các quan điểm này là khẳng định rằng bản thân các nhận xét không có lợi cũng không có hại và điều quan trọng là chúng đúng và được đồng bộ hóa với mã nguồn và bị bỏ qua nếu chúng thừa, quá mức, khó bảo trì hoặc nói cách khác là không hữu ích

Nhận xét đôi khi được sử dụng để ghi lại các hợp đồng trong thiết kế theo cách tiếp cận hợp đồng để lập trình

Mức độ chi tiết[sửa]

Tùy thuộc vào đối tượng dự định của mã và các cân nhắc khác, mức độ chi tiết và mô tả có thể thay đổi đáng kể

Ví dụ: nhận xét Java sau đây sẽ phù hợp trong văn bản giới thiệu được thiết kế để dạy lập trình cho người mới bắt đầu

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
3

Tuy nhiên, mức độ chi tiết này sẽ không phù hợp trong bối cảnh mã sản xuất hoặc các tình huống khác liên quan đến các nhà phát triển có kinh nghiệm. Mô tả thô sơ như vậy là không phù hợp với hướng dẫn. "Ý kiến ​​hay. làm rõ ý định. " Ngoài ra, đối với môi trường viết mã chuyên nghiệp, mức độ chi tiết thường được xác định rõ ràng để đáp ứng yêu cầu hiệu suất cụ thể do hoạt động kinh doanh xác định

Có nhiều lựa chọn thay thế về phong cách có sẵn khi xem xét cách nhận xét sẽ xuất hiện trong mã nguồn. Đối với các dự án lớn hơn liên quan đến một nhóm các nhà phát triển, các kiểu nhận xét được thống nhất trước khi dự án bắt đầu hoặc phát triển theo quy ước hoặc nhu cầu khi dự án phát triển. Thông thường các lập trình viên thích phong cách nhất quán, không cản trở, dễ sửa đổi và khó phá vỡ

Các đoạn mã sau đây trong C chỉ minh họa một ví dụ nhỏ về cách các nhận xét có thể thay đổi theo phong cách, trong khi vẫn truyền tải cùng một thông tin cơ bản

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
4

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
5

Các yếu tố như sở thích cá nhân, tính linh hoạt của các công cụ lập trình và các cân nhắc khác có xu hướng ảnh hưởng đến các biến thể phong cách được sử dụng trong mã nguồn. Ví dụ: Biến thể Hai có thể không được ưa chuộng đối với những lập trình viên không có trình chỉnh sửa mã nguồn có thể tự động hóa việc căn chỉnh và hình thức trực quan của văn bản trong nhận xét

Nhà tư vấn phần mềm và nhà bình luận công nghệ Allen Holub là một chuyên gia ủng hộ việc sắp xếp các cạnh trái của nhận xét

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")
0

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")
1

Việc sử dụng /* và */ làm dấu phân cách chú thích khối được kế thừa từ PL/I sang ngôn ngữ lập trình B, tiền thân trực tiếp của ngôn ngữ lập trình C

Nhận xét dòng thường sử dụng dấu phân cách tùy ý hoặc chuỗi mã thông báo để biểu thị phần đầu của nhận xét và ký tự dòng mới để biểu thị phần cuối của nhận xét

Trong ví dụ này, tất cả văn bản từ ký tự ASCII // đến cuối dòng đều bị bỏ qua

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")
2

Thông thường, một bình luận như vậy phải bắt đầu ở ngoài cùng bên trái và mở rộng ra toàn bộ dòng. Tuy nhiên, trong nhiều ngôn ngữ, cũng có thể đặt chú thích nội tuyến bằng dòng lệnh, để thêm chú thích vào đó – như trong ví dụ Perl này

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")
3

Nếu một ngôn ngữ cho phép cả chú thích dòng và chú thích khối, nhóm lập trình có thể quyết định quy ước sử dụng chúng theo cách khác nhau. e. g. dòng nhận xét chỉ dành cho nhận xét nhỏ và chặn nhận xét để mô tả các phần tóm tắt cấp cao hơn

Các lập trình viên có thể sử dụng các thẻ không chính thức trong các nhận xét để hỗ trợ lập chỉ mục các vấn đề phổ biến. Sau đó, chúng có thể được tìm kiếm bằng các công cụ lập trình phổ biến, chẳng hạn như tiện ích Unix grep hoặc thậm chí được tô sáng cú pháp trong trình soạn thảo văn bản. Chúng đôi khi được gọi là "thẻ mã" hoặc "mã thông báo"

Các thẻ như vậy rất khác nhau, nhưng có thể bao gồm

  • LỖI, GỠ LỖI — một lỗi đã biết cần được sửa chữa
  • FIXME - nên được sửa chữa
  • HACK, BODGE, KLUDGE — một giải pháp thay thế
  • TODO - một việc phải làm
  • LƯU Ý - được sử dụng để làm nổi bật các vấn đề đặc biệt đáng chú ý
  • HOÀN TẤT — đảo ngược hoặc "khôi phục" mã trước đó
  • XXX — cảnh báo các lập trình viên khác về mã có vấn đề hoặc sai hướng

Các ví dụ[sửa]

So sánh[sửa]

Các quy ước đánh máy để chỉ định nhận xét rất khác nhau. Hơn nữa, các ngôn ngữ lập trình riêng lẻ đôi khi cung cấp các biến thể độc đáo. Để có đánh giá chi tiết, mời bạn tham khảo bài viết

Ada [ chỉnh sửa ]

Ngôn ngữ lập trình Ada sử dụng '--' để biểu thị nhận xét cho đến cuối dòng

Ví dụ

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")
4

APL [ chỉnh sửa ]

APL sử dụng

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
7 để biểu thị nhận xét cho đến cuối dòng

Ví dụ

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")
5

Trong các phương ngữ có nguyên mẫu

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
8 ("trái") và
switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
9 ("phải"), các nhận xét thường có thể ở bên trong hoặc các câu lệnh riêng biệt, ở dạng các chuỗi bị bỏ qua

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")
6

AppleScript[sửa]

Phần mã AppleScript này hiển thị hai kiểu nhận xét được sử dụng trong ngôn ngữ đó

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")
7

CƠ BẢN[sửa]

Trong đoạn mã BASIC ban đầu cổ điển này, từ khóa REM ("Nhận xét") được sử dụng để thêm nhận xét

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")
8

Trong Microsoft BASIC sau này, bao gồm Quick Basic, Q Basic, Visual Basic, Visual Basic. NET và Tập lệnh VB;

Một ví dụ trong Visual Basic. BỌC LƯỚI

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")
9

C[sửa]

Đoạn mã C này minh họa việc sử dụng chú thích mở đầu hoặc "chú thích khối" để mô tả mục đích của câu lệnh điều kiện. Nhận xét giải thích các thuật ngữ và khái niệm chính, đồng thời bao gồm chữ ký ngắn của lập trình viên, người đã viết mã

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);
0

Kể từ C99, cũng có thể sử dụng cú pháp // từ C++, biểu thị nhận xét một dòng

Cấu hình Cisco IOS và IOS-XE[sửa | sửa mã nguồn]

Dấu chấm than (. ) có thể được sử dụng để đánh dấu các nhận xét trong chế độ cấu hình của bộ định tuyến Cisco, tuy nhiên các nhận xét đó không được lưu vào bộ nhớ cố định (có chứa startup-config), chúng cũng không được hiển thị bằng lệnh "show run"

Có thể chèn nội dung mà con người có thể đọc được thực sự là một phần của cấu hình và có thể được lưu vào cấu hình khởi động NVRAM thông qua

  • Lệnh "mô tả", được sử dụng để thêm mô tả vào cấu hình của giao diện hoặc của BGP lân cận
  • Tham số "tên", để thêm nhận xét vào tuyến tĩnh
  • Lệnh "nhận xét" trong danh sách truy cập

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);
1

Lạnh tổng hợp [ chỉnh sửa ]

ColdFusion sử dụng chú thích tương tự như chú thích HTML, nhưng thay vì hai dấu gạch ngang, nó sử dụng ba. Những nhận xét này được bắt bởi công cụ ColdFusion và không được in ra trình duyệt

Những nhận xét như vậy có thể lồng vào nhau

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);
2

D [ chỉnh sửa ]

D sử dụng chú thích kiểu C++, cũng như chú thích nhiều dòng kiểu D có thể lồng nhau, bắt đầu bằng '/+' và kết thúc bằng '+/'

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);
3

Pháo đài IV[sửa mã nguồn]

Đoạn mã Fortran IV này minh họa cách các bình luận được sử dụng trong ngôn ngữ đó, ngôn ngữ này rất hướng cột. Chữ "C" trong cột 1 khiến toàn bộ dòng được coi là nhận xét

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);
4

Lưu ý rằng các cột của một dòng được coi là bốn trường. 1 đến 5 là trường nhãn, 6 làm cho dòng được coi là phần tiếp theo của câu lệnh trước đó;

Fortran 90[sửa mã nguồn]

Đoạn mã Fortran này minh họa cách các chú thích được sử dụng trong ngôn ngữ đó, với các chú thích mô tả các quy tắc định dạng cơ bản

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);
5

Haskell [ chỉnh sửa ]

Nhận xét dòng trong Haskell bắt đầu bằng '--' (hai dấu gạch ngang) cho đến cuối dòng và nhận xét nhiều dòng bắt đầu bằng '{-' và kết thúc bằng '-}'

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);
6

Haskell cũng cung cấp một phương pháp nhận xét lập trình biết chữ được gọi là "Kiểu chim". Trong này, tất cả các dòng bắt đầu bằng > được hiểu là mã, mọi thứ khác được coi là nhận xét. Một yêu cầu bổ sung là bạn luôn để trống một dòng trước và sau khối mã

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);
7

Lập trình biết chữ cũng có thể được thực hiện trong Haskell, sử dụng LaTeX. Môi trường mã có thể được sử dụng thay vì phong cách của Richard Bird. Trong phong cách LaTeX, điều này tương đương với ví dụ trên, môi trường mã có thể được xác định trong phần mở đầu của LaTeX. Đây là một định nghĩa đơn giản

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);
8

sau này

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);
9

Java[sửa]

Đoạn mã Java này hiển thị một chú thích khối được sử dụng để mô tả phương thức

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
20. Định dạng phù hợp với các tiêu chuẩn Javadoc của Sun Microsystems. Nhận xét được thiết kế để bộ xử lý Javadoc đọc được


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

0

JavaScript[sửa]

JavaScript sử dụng // để đặt trước các chú thích và /* */ đối với các chú thích nhiều dòng


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

1

Lúa [ chỉnh sửa ]

Ngôn ngữ lập trình Lua sử dụng dấu gạch ngang kép,

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
4, cho nhận xét một dòng theo cách tương tự như các ngôn ngữ Ada, Eiffel, Haskell, SQL và VHDL. Lua cũng có các bình luận khối, bắt đầu bằng
switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
22 và chạy cho đến khi kết thúc
switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
23

Ví dụ


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

2

Một kỹ thuật phổ biến để nhận xét một đoạn mã, là đặt mã giữa

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
22 và
switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
25, như bên dưới


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

3

Trong trường hợp này, có thể kích hoạt lại mã bằng cách thêm một dấu gạch ngang vào dòng đầu tiên

Trong ví dụ đầu tiên,

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
22 ở dòng đầu tiên bắt đầu một nhận xét dài và hai dấu gạch nối ở dòng cuối cùng vẫn nằm trong nhận xét đó. Trong ví dụ thứ hai, chuỗi
switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
27 bắt đầu một bình luận một dòng bình thường, để dòng đầu tiên và dòng cuối cùng trở thành bình luận độc lập. Trong trường hợp này,
switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
28 là bình luận bên ngoài. Trong trường hợp này, dòng cuối cùng trở thành một nhận xét độc lập, vì nó bắt đầu bằng
switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
4

Chú thích dài trong Lua có thể phức tạp hơn những chú thích này, bạn có thể đọc trong phần "Chuỗi dài" c. f. Lập trình trong Lua

MATLAB[sửa]

Trong ngôn ngữ lập trình của MATLAB, ký tự '%' biểu thị nhận xét một dòng. Nhận xét nhiều dòng cũng có sẵn qua dấu ngoặc %{ và %} và có thể được lồng vào nhau, e. g


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

4

Nim [ chỉnh sửa ]

Nim sử dụng ký tự '#' cho nhận xét nội tuyến. Nhận xét khối nhiều dòng được mở bằng '#[' và đóng bằng ']#'. Nhận xét khối nhiều dòng có thể được lồng vào nhau

Nim cũng có các nhận xét tài liệu sử dụng hỗn hợp đánh dấu Markdown và ReStructuredText. Nhận xét tài liệu nội tuyến sử dụng '##' và nhận xét tài liệu khối nhiều dòng được mở bằng '##[' và đóng bằng ']##'. Trình biên dịch có thể tạo tài liệu HTML, LaTeX và JSON từ các nhận xét tài liệu. Nhận xét tài liệu là một phần của cây cú pháp trừu tượng và có thể được trích xuất bằng cách sử dụng macro


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

5

OCaml[sửa]

OCaml sử dụng các chú thích có thể lồng vào nhau, rất hữu ích khi chú thích một khối mã


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

6

Pascal[sửa]

Trong họ ngôn ngữ pascal của Niklaus Wirth (bao gồm Modula-2 và Oberon), chú thích được mở đầu bằng '(*' và kết thúc bằng '*)'

Ví dụ


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

7

Trong các phương ngữ hiện đại của Pascal, '{' và '}' được sử dụng thay thế

Perl [ chỉnh sửa ]

Nhận xét dòng trong Perl và nhiều ngôn ngữ kịch bản khác, bắt đầu bằng ký hiệu băm (#)


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

8

Ví dụ, thay vì cấu trúc nhận xét khối thông thường, Perl sử dụng Tài liệu cũ đơn giản, một ngôn ngữ đánh dấu để lập trình biết chữ


 ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>

9

R [ chỉnh sửa ]

R chỉ hỗ trợ nhận xét nội tuyến bắt đầu bằng ký tự băm (#)

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")
0

Raku [ chỉnh sửa ]

Raku (trước đây được gọi là Perl 6) sử dụng cùng dòng nhận xét và nhận xét Tài liệu POD như Perl thông thường (xem phần Perl ở trên), nhưng thêm loại nhận xét khối có thể định cấu hình. "bình luận nhiều dòng/nhúng"

Chúng bắt đầu bằng một ký tự băm, theo sau là một dấu gạch ngược, sau đó là một số ký tự mở ngoặc và kết thúc bằng ký tự đóng ngoặc phù hợp. Nội dung không chỉ có thể trải rộng trên nhiều dòng mà còn có thể được nhúng nội tuyến

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")
1

PHP [ chỉnh sửa ]

Nhận xét trong PHP có thể theo kiểu C++ (cả nội tuyến và khối) hoặc sử dụng hàm băm. PHPDoc là một kiểu được điều chỉnh từ Javadoc và là một tiêu chuẩn chung để ghi lại mã PHP

Bắt đầu từ PHP 8, dấu # chỉ có thể có nghĩa là nhận xét nếu nó không được theo sau bởi '['. Nếu không, nó sẽ có nghĩa là một thuộc tính chức năng, chạy cho đến khi ']'

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")
2

PowerShell[sửa]

Nhận xét trong Windows PowerShell

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")
3

Trăn[sửa]

Nhận xét nội tuyến trong Python sử dụng ký tự băm (#), như trong hai ví dụ trong đoạn mã này

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")
4

Chặn nhận xét, như được định nghĩa trong bài viết này, về mặt kỹ thuật không tồn tại trong Python. Có thể sử dụng một chuỗi ký tự trần được biểu thị bằng một chuỗi trích dẫn ba lần, nhưng không bị trình thông dịch bỏ qua giống như cách nhận xét "#" là. Trong các ví dụ bên dưới, ba chuỗi trích dẫn kép hoạt động theo cách này dưới dạng nhận xét, nhưng cũng được coi là chuỗi tài liệu

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")
5

Ruby [ chỉnh sửa ]

Nhận xét nội tuyến trong Ruby bắt đầu bằng ký tự #

Để tạo nhận xét nhiều dòng, người ta phải đặt "=bắt đầu" ở đầu dòng và sau đó mọi thứ cho đến khi "=kết thúc" bắt đầu một dòng sẽ bị bỏ qua. Bao gồm một khoảng trắng sau dấu bằng trong trường hợp này sẽ gây ra lỗi cú pháp

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")
6

SQL[sửa]

Nhận xét tiêu chuẩn trong SQL ở dạng chỉ một dòng, sử dụng hai dấu gạch ngang

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")
7

Ngoài ra, cú pháp định dạng nhận xét giống với kiểu "khối nhận xét" được sử dụng trong cú pháp cho C và Java được hỗ trợ bởi Transact-SQL, MySQL, SQLite, PostgreSQL và Oracle

MySQL cũng hỗ trợ nhận xét từ ký tự băm (#) đến cuối dòng

Nhanh chóng [ chỉnh sửa ]

Nhận xét một dòng bắt đầu bằng hai dấu gạch chéo (//)

Nhận xét nhiều dòng bắt đầu bằng dấu gạch chéo lên, theo sau là dấu hoa thị (/*) và kết thúc bằng dấu hoa thị, sau đó là dấu gạch chéo lên (*/)

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")
8

Nhận xét nhiều dòng trong Swift có thể được lồng vào bên trong các nhận xét nhiều dòng khác. Bạn viết các chú thích lồng nhau bằng cách bắt đầu một khối chú thích nhiều dòng và sau đó bắt đầu một chú thích nhiều dòng thứ hai trong khối đầu tiên. Khối thứ hai sau đó được đóng lại, tiếp theo là khối thứ nhất

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")
9

XML (hoặc HTML)[sửa]

Nhận xét trong XML (hoặc HTML) được giới thiệu với

và có thể trải rộng trên một số dòng cho đến khi bộ kết thúc,

Ví dụ,

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* .. etc. .. */
  }
0

Để tương thích với SGML, chuỗi "--" (gạch nối kép) không được phép bên trong nhận xét

Vấn đề bảo mật[sửa]

Trong các ngôn ngữ được giải thích, các nhận xét có thể xem được đối với người dùng cuối của chương trình. Trong một số trường hợp, chẳng hạn như các phần mã được "nhận xét", điều này có thể gây ra lỗ hổng bảo mật

Tại sao mã PHP của tôi không thực thi?

Nếu bạn đang chạy tập lệnh PHP trên máy tính Windows, bạn cần cài đặt PHP theo cách thủ công . Nếu bạn chưa làm như vậy, mã PHP của bạn sẽ không thực thi. Hướng dẫn về quá trình cài đặt, phiên bản và yêu cầu hệ thống được liệt kê tại trang web PHP.

Mã PHP được thực thi ở đâu?

Mã PHP được thực thi trên máy chủ .

Mã PHP được thực thi như thế nào?

Nói chung, trình thông dịch PHP trải qua bốn giai đoạn khi thực thi mã. Lexing . Phân tích cú pháp . Biên dịch .

PHP được thực thi từ dòng lệnh như thế nào?

Bạn chỉ cần làm theo các bước để chạy chương trình PHP bằng dòng lệnh. .
Mở terminal hoặc cửa sổ dòng lệnh
Chuyển đến thư mục hoặc thư mục được chỉ định chứa các tệp php
Sau đó, chúng ta có thể chạy mã php bằng lệnh sau. tên_tệp php. php