Làm thế nào để đối phó với tautology trong ý kiến? [đóng cửa]


54

Đôi khi tôi thấy mình trong tình huống khi một phần của mã mà tôi đang viết là (hoặc dường như ) rất rõ ràng rằng tên của nó về cơ bản sẽ được lặp lại như một nhận xét:

class Example
{
    /// <summary>
    /// The location of the update.
    /// </summary>
    public Uri UpdateLocation { get; set; };
}

(Ví dụ về C #, nhưng vui lòng xem câu hỏi là bất khả tri về ngôn ngữ).

Một nhận xét như thế là vô ích; tôi đang làm gì sai Có phải sự lựa chọn của tên là sai? Làm thế nào tôi có thể nhận xét những phần như thế này tốt hơn? Tôi có nên bỏ qua bình luận cho những thứ như thế này?


8
Lưu ý: Tôi sẽ coi "Vị trí của bản cập nhật" là rất mơ hồ trừ khi rõ ràng "bản cập nhật" là gì. Hệ thống có hỗ trợ các loại URI khác ngoài URL không?

34
return result # returns result
Lukas Stejskal

27
Cách đối phó với tautology trong các bình luận là cách để đối phó với tautology trong các bình luận. (Đây là một nhận xét.)
Rex Kerr

29
Đây không thực sự là một bình luận, nó thực sự là tài liệu được viết dưới dạng một bình luận. Các quy tắc khác nhau áp dụng cho tài liệu API so với các quy tắc nhận xét mã nội tuyến.
Cody Grey

10
Đây chỉ đơn giản là một ví dụ về Tài liệu API kém, không phải là nhận xét mã. Định dạng XML C # của tôi cho một thuộc tính như thế này sẽ trông giống như "Gets hoặc Đặt Uri có thể được sử dụng để truy cập máy chủ cập nhật của đối tượng này."
Kevin McCormick

Câu trả lời:


13

Trong hầu hết các dự án tôi làm, không có nhiều thời gian để viết bình luận chi tiết cho từng thành viên trong lớp.

Điều đó không có nghĩa là không có thời gian cho ý kiến; ngược lại, có rất nhiều thời gian cho các bình luận tautological cho rằng một phiên bản bị chê lại của bất cứ điều gì đang được bình luận. Họ làm việc tuyệt vời như một điểm khởi đầu .

Đặc biệt với việc sử dụng các bình luận của Visual Studio đi kèm với IntelliSense , nên bắt đầu với một chút thông tin về lĩnh vực này:

class Example
{
    /// <summary>
    /// The location of the update.
    /// </summary>
    public Uri UpdateLocation { get; set; };
}

Và sau đó khi bạn tiếp tục viết mã, khi bạn không thể nhớ UpdateLocationđược đó là vị trí mà bản cập nhật đã diễn ra hay vị trí mà bản cập nhật được gửi đến, bạn sẽ phải xem lại mã. Tại thời điểm này, bạn nên thêm thông tin bổ sung đó:

class Example
{
    /// <summary>
    /// The Uri location where the update took place.
    /// </summary>
    public Uri UpdateLocation { get; set; };
}

Nếu có một lập trình viên khác hỏi bạn về chi tiết trên một lĩnh vực, hãy cập nhật các nhận xét với thông tin đó:

Những loại cập nhật nên Example.UpdateLocationđược sử dụng để lưu trữ?

class Example
{
    /// <summary>
    /// The Uri location where the Foo update took place.
    /// </summary>
    public Uri UpdateLocation { get; set; };
}

Giống như một chương trình có lỗi, bình luận tốt có lỗi cần được lặp đi lặp lại. Mục đích của các bình luận là để giúp hiểu mã khi bạn truy cập lại sáu tháng sau đó và không thể nhớ bất cứ điều gì về cách chương trình hoạt động.

Và cũng giống như lập trình, ý kiến ​​của bạn phải bắt đầu từ đâu đó. Nhận xét Tautological là các Hello World!ý kiến, khi bạn thực hành viết và cập nhật tài liệu, tài liệu bắt đầu của bạn sẽ ngày càng trở nên kiên cường hơn.


+1 vì là người duy nhất thực sự đưa ra nhận xét thay thế; thay vì chỉ trả lời tautological.
Ian Boyd

Đây thực sự là câu trả lời tốt nhất cho đến nay.
Roland Tepp

1
Trong dự án hiện tại của tôi, tôi đã bị ảnh hưởng nhiều hơn tôi có thể đếm được do thiếu ý kiến ​​về một cơ sở mã di sản lớn. Một cái gì đó Bạn với tư cách là một tác giả, nghĩ rằng tên phương thức tự giải thích rõ ràng cho một cái gì đó Bạn coi là chức năng khá rõ ràng, có thể không giống như tự viết tài liệu trong ba tháng cho nhà phát triển khác. Tài liệu về các phương pháp, thuộc tính và các trường nên cố gắng đặt một bối cảnh cho bức tranh rộng hơn và câu trả lời này giải thích quá trình tốt nhất để đạt được mục tiêu đó, cho đến nay tôi đã thấy.
Roland Tepp

1
@RolandTepp, tôi hoàn toàn hiểu bạn đến từ đâu. Và tôi hoàn toàn đồng ý. Vấn đề như tôi thấy đó là nhiều lập trình viên xem các bình luận và tài liệu là một cái gì đó xảy ra sau khi mã hoàn thành và sẵn sàng để gửi, chứ không phải là một điều xảy ra với mã như một phần của quá trình phát triển, đòi hỏi phải theo dõi lỗi và hỗ trợ hàng giờ cùng với phần còn lại của mã.
zzzzBov

54

Bình luận không bao giờ nên sao chép mã của bạn. Nhận xét không nên trả lời câu hỏi " làm thế nào? ", Mà chỉ " tại sao? " Và " cái gì? ". Tại sao một thuật toán như vậy được chọn, các giả định ngầm định ở đây là gì (trừ khi ngôn ngữ của bạn đủ mạnh để diễn đạt nó với hệ thống loại, hợp đồng và tương tự), lý do để làm điều này là gì, v.v.

Tôi khuyên bạn nên xem thực hành Lập trình Văn học để tìm cảm hứng.


+1 - đây là câu trả lời! Chúng tôi không cần bình luận như "Khai báo biến", "Bộ đếm tăng" (trong một vòng lặp), v.v.
ozz

Vậy trong ví dụ của OP, điều gì sẽ là một nhận xét tốt?
stijn

4
@stijn, tôi không biết - rõ ràng là nó bị thiếu trong mã. Một cái gì đó mà chỉ có tác giả của mã biết về mục đích và giới hạn của nó.
SK-logic

Có lẽ một số nhận xét như // Cập nhật tăngShielders theo levelOfAttack (được chuyển dưới dạng URL)
woliveirajr

15
Câu hỏi quan trọng nhất mà một bình luận nên trả lời là " WTF? "
naught101

53

Nhận xét nên mô tả mã, không trùng lặp nó. Nhận xét tiêu đề này chỉ trùng lặp. Để nó ra.


17
+1: Tôi nghĩ tôi hiểu ý của bạn, nhưng tôi không đồng ý với những gì bạn nói :-) Càng xa càng tốt, nên mô tả mã, trong khi các bình luận nên mô tả lý lẽ của bạn.
Kramii phục hồi Monica

3
@Kramii, thật không may, mã không có khả năng mô tả mã, ngay cả khi bạn đang mã hóa trong Agda. Không có ngôn ngữ nào mạnh mẽ và biểu cảm như ngôn ngữ tự nhiên. Và thường thì bạn sẽ cần các sơ đồ, đồ thị, bảng biểu, công thức phức tạp để mô tả mã - hầu như không thể nếu không có một chương trình biết chữ phù hợp.
SK-logic

6
@ SK-logic: Tôi không đồng ý. Một phương thức dài ít tự mô tả hơn một phương thức ngắn gọi một loạt các chương trình con được đặt tên tốt.
Kramii phục hồi Monica

3
@Kramii, xin lỗi, tôi không thể thấy những gì bạn không đồng ý và nhận xét của bạn liên quan đến việc tôi đã nói như thế nào. Quan điểm của tôi là rất nhiều thông tin nên được cung cấp cùng với mã của bạn mà hoàn toàn thiếu từ chính mã. Tất cả lịch sử đằng sau các quyết định bạn đã đưa ra, tất cả các tài liệu tham khảo có liên quan đến các bài báo, v.v. - không có yếu tố ngôn ngữ nào để diễn đạt những điều đó. Và dài so với các phương thức / hàm / chương trình con / bất cứ điều gì hoàn toàn không liên quan ở đây.
SK-logic

2
@ SK-logic, những gì Kramii nói phương tiện: "Mã nên dễ đọc và hiểu bản thân" và tất cả các đồ thị vv mà bạn đang nhắc đến thác vào những gì anh nói là: "những ý kiến nên mô tả lập luận của bạn"
Shahbaz

36

Để chúng ra ngoài!

Thông thường, đó là một thực hành tốt để loại bỏ các bình luận trong đó thông tin thể hiện trong đó đã có mặt ở nơi khác. Nếu bạn có thể thể hiện mục đích của một phương pháp rõ ràng và rõ ràng bằng cách đặt cho nó một cái tên hay thì không cần phải bình luận .

Đặt chúng vào!

Ví dụ của bạn minh họa hai trường hợp ngoại lệ cho quy tắc này:

Đầu tiên, "Cập nhật vị trí" có thể (tùy thuộc vào ngữ cảnh) không rõ ràng. Trong trường hợp đó, bạn cần phải đặt tên tốt hơn hoặc đưa ra nhận xét để xóa bỏ sự mơ hồ. Cải thiện tên nói chung là tùy chọn tốt hơn, nhưng điều này không phải lúc nào cũng có thể (ví dụ khi bạn đang triển khai API được xuất bản).

Thứ hai, "///" trong C # cho biết một nhận xét được dự định sẽ được sử dụng để tự động tạo tài liệu. IDE sử dụng các nhận xét này cho các mẹo về công cụ và có các công cụ (Sandcastle) có thể tạo các tệp trợ giúp và vv từ các nhận xét này. Như vậy, có các đối số để chèn các nhận xét này ngay cả khi các phương thức mà chúng ghi lại đã có tên mô tả. Tuy nhiên, ngay cả sau đó, nhiều nhà phát triển có kinh nghiệm sẽ nhăn mặt về sự trùng lặp thông tin. Yếu tố quyết định nên là nhu cầu của những người mà tài liệu dự định.


Đây là câu trả lời tốt nhất. Bạn sẽ có thể tìm ra chính xác tài sản sẽ được sử dụng khi bạn tiêu thụ lớp Ví dụ và di chuột qua thuộc tính.
Andy

Trong những tình huống này, tôi cố gắng (và thường thất bại), để thêm ít nhất một trong hai <remarks/>hoặc <see/>để cung cấp một số nội dung bổ sung. Các <summary/>vẫn lặp lại, nhưng những nhận xét tổng thể là không hoàn toàn vô dụng.
Earl Namless

20

Tôi hoàn toàn không đồng ý với câu trả lời "không viết bình luận". Tại sao? Hãy để tôi chỉ ra bằng cách thay đổi ví dụ của bạn một chút.

public Uri UpdateLocation ();

Vậy chức năng này làm gì:

  • Nó có trả về "vị trí cập nhật" không? hoặc là
  • Nó có "cập nhật" vị trí và trả lại vị trí mới không?

Bạn có thể thấy rằng không có bình luận thì có sự mơ hồ. Một người mới có thể dễ dàng phạm sai lầm.

Trong ví dụ của bạn, nó là một thuộc tính nên các phương thức "get / set" tiết lộ rằng tùy chọn thứ hai không chính xác và nó thực sự có nghĩa là "cập nhật vị trí" chứ không phải "cập nhật vị trí". Nhưng nó quá dễ để phạm sai lầm này, đặc biệt là trong trường hợp những từ mơ hồ như "cập nhật". Chơi an toàn. Đừng nhầm lẫn ai đó mới chỉ để tiết kiệm một vài giây thời gian của bạn.


4
Tôi không nghĩ có ai ủng hộ việc không viết bất kỳ bình luận nào cả. Hầu hết / tất cả đều nói "viết bình luận phù hợp", ví dụ về UpdateLocation sẽ xuất hiện.
ozz

16
Uri UpdateLocation()sẽ bị từ chối bằng cách xem lại mã và thay đổi thành Uri GetUpdateLocation()hoặc void UpdateLocation().
avakar

4
@avakar: Đồng ý với tình cảm, nhưng vì đây là thuộc tính C # (get và set được tự động tổng hợp và có cùng tên) đổi tên thành GetUpdateLocationsẽ có mã như thế GetUpdateLocation = somelocation. LocationOfUpdatesẽ là một cái tên tốt hơn, loại bỏ sự mơ hồ. Vấn đề cơ bản là OP đã sử dụng tiền tố động từ thay vì danh từ. Động từ dẫn đầu được cho là để chỉ hành động của một phương thức.
Ant

2
@DPD, "Mất bao nhiêu thời gian và công sức để làm một dòng" cần bao nhiêu nỗ lực để duy trì nó? Nó lãng phí bao nhiêu màn hình? Mất bao nhiêu thời gian khi cuối cùng nó không đồng bộ với mã và bắt đầu gây nhầm lẫn cho các nhà phát triển?
avakar

1
Phương thức trả về một giá trị và có tên cụm động từ. Đây là vấn đề. Nó nên có một tên danh từ. ví dụ: 'Uri LocationOfUpdate ()'. Không phải GetUpdateLocation, bạn có nói rằng GetLocation của bạn là gì không?
ctrl-alt-delor

14

/// <summary>các khối được sử dụng để tạo tài liệu cho tài liệu IntelliSense và API .

Do đó, nếu đây là API hướng tới công chúng, bạn phải luôn bao gồm ít nhất một <summary>nhận xét, ngay cả khi mục đích của chức năng phải hiển nhiên đối với người đọc.

Tuy nhiên, đây là ngoại lệ của quy tắc; nói chung, chỉ cần nhớ DRY (Đừng lặp lại chính mình) .


5

Chỉ điền vào những bình luận như thế nếu bạn biết bạn sẽ được lợi như thế nào từ những thứ như thế; Nếu không thì chỉ cần lau chúng.

Đối với tôi, trường hợp lợi ích rõ ràng là khi có một kiểm tra tự động cho các bình luận bị thiếu tôi đang sử dụng kiểm tra đó để phát hiện mã nơi cần điền thông tin quan trọng; vì điều này tôi thực sự đã lấp đầy một số chỗ dành sẵn - chỉ để đảm bảo rằng báo cáo công cụ không chứa "báo động sai".

Tôi nghĩ luôn có cách để tránh sự trùng lặp trắng trợn . Trong nhiều năm qua, tôi đã sử dụng vài "bộ đệm mẫu" cho các trường hợp như của bạn - chủ yếu là tên tự mô tảxem ở trên .

Trong ví dụ cụ thể này, tôi sẽ sử dụng một cái gì đó thuộc loại "tự mô tả" (giả sử đó không phải là trường hợp xóa sổ sẽ thực hiện công việc), như thế:

class Example
{
    /// <summary>
    /// Self descriptive method name.
    /// </summary>
    public Uri UpdateLocation { get; set; };
}

Ví dụ khi tôi có thể sử dụng xem các loại chất độn ở trên sẽ là các bình luận Javadoc yêu cầu các trường chuyên dụng cho giá trị trả về, tham số và ngoại lệ. Rất thường xuyên, tôi thấy rằng sẽ tốt hơn khi mô tả hầu hết hoặc thậm chí tất cả những điều này trong câu tóm tắt duy nhất, phương thức trả về <mô tả những gì được trả về> cho các tham số được cung cấp <mô tả tham số> . Trong trường hợp như vậy, tôi điền vào các trường bắt buộc chính thức với xem đơn giản ở trên , trỏ người đọc đến mô tả tóm tắt.


3

Đây là một câu hỏi tôi muốn tự hỏi mình khi suy nghĩ về việc có nên thêm nhận xét vào một phần của mã không: Tôi có thể truyền đạt điều gì để giúp người tiếp theo hiểu rõ hơn về mục đích chung của mã, để họ có thể cập nhật, sửa chữa hoặc mở rộng nó nhanh hơn và đáng tin cậy hơn?

Đôi khi, câu trả lời chính xác cho câu hỏi này là không có gì nhiều bạn có thể thêm vào thời điểm đó trong mã, bởi vì bạn đã chọn tên và quy ước làm cho ý định trở nên rõ ràng nhất có thể. Điều đó có nghĩa là bạn đã viết mã tự viết tài liệu vững chắc và việc chèn một nhận xét ở đó có thể sẽ làm mất giá trị nhiều hơn nó sẽ giúp ích. (Lưu ý rằng các nhận xét dư thừa thực sự có thể làm hỏng độ tin cậy của mã theo thời gian bằng cách làm chậm sự không đồng bộ với mã thực theo thời gian và do đó làm cho việc giải mã ý định thực sự khó khăn hơn.

Tuy nhiên, trong hầu hết mọi chương trình và trong bất kỳ ngôn ngữ lập trình nào, bạn sẽ gặp phải những điểm mà các khái niệm và quyết định quan trọng nhất định được lập trình viên ban đầu - bởi bạn - sẽ không còn rõ ràng trong mã. Điều này là không thể tránh khỏi bởi vì một lập trình viên giỏi luôn lập trình cho tương lai - nghĩa là, không chỉ để chương trình hoạt động một lần, mà còn tạo ra tất cả nhiều bản sửa lỗi và phiên bản và mở rộng và sửa đổi trong tương lai và ai biết phải làm gì cũng hoạt động chính xác. Rằng mục tiêu sau đó khó hơn rất nhiều, và đòi hỏi nhiều suy nghĩ hơn để làm tốt. Nó cũng rất khó để thể hiện tốt trong hầu hết ngôn ngữ máy tính, đó là tập trung hơn vào chức năng - có nghĩa là, trên nói những gì hiện này phiên bản của chương trình cần phải làm, ngay bây giờ, để làm cho nó thỏa đáng.

Đây là một ví dụ đơn giản về những gì tôi muốn nói. Trong hầu hết các ngôn ngữ, một tìm kiếm nội tuyến nhanh chóng về cấu trúc dữ liệu nhỏ sẽ có đủ độ phức tạp để ai đó lần đầu tiên nhìn vào nó có thể sẽ không nhận ra ngay đó là gì. Đó là cơ hội cho một nhận xét tốt, bởi vì bạn có thể thêm một cái gì đó về ý định mã của bạn mà người đọc sau này có thể sẽ đánh giá cao ngay lập tức vì hữu ích cho việc giải mã các chi tiết.

Ngược lại, trong các ngôn ngữ như ngôn ngữ dựa trên logic Prolog, việc thể hiện tìm kiếm một danh sách nhỏ có thể rất tầm thường và cô đọng đến nỗi mọi bình luận bạn có thể thêm sẽ chỉ là tiếng ồn. Vì vậy, bình luận tốt nhất thiết phải phụ thuộc vào bối cảnh. Điều đó bao gồm các yếu tố như thế mạnh của ngôn ngữ bạn đang sử dụng và bối cảnh chương trình tổng thể.

Điểm mấu chốt là đây: Nghĩ đến tương lai. Tự hỏi bản thân điều gì là quan trọng và rõ ràng đối với bạn về cách chương trình nên được hiểu và sửa đổi trong tương lai. [1]

Đối với những phần trong mã của bạn thực sự là tài liệu tự động, các bình luận chỉ cần thêm nhiễu và tăng vấn đề kết hợp cho các phiên bản trong tương lai. Vì vậy, đừng thêm chúng ở đó.

Nhưng đối với những phần trong mã của bạn, nơi bạn đã đưa ra quyết định quan trọng từ một số tùy chọn hoặc khi bản thân mã đủ phức tạp, mục đích của nó không rõ ràng, xin vui lòng, hãy thêm kiến ​​thức đặc biệt của bạn dưới dạng nhận xét. Một nhận xét tốt trong trường hợp như vậy là một nhận xét cho phép một số lập trình viên tương lai biết điều gì phải được giữ nguyên - đó là khái niệm về một khẳng định bất biến, tình cờ - và điều gì là ổn để thay đổi.


[1] Điều này vượt xa vấn đề bình luận, nhưng đáng để đưa ra: Nếu bạn thấy rằng bạn có một ý tưởng rất rõ ràng về cách mã của bạn có thể thay đổi trong tương lai, bạn có thể nên nghĩ xa hơn là chỉ nhận xét và nhúng các tham số đó trong chính mã, vì điều đó hầu như sẽ luôn là một cách đáng tin cậy hơn để đảm bảo độ tin cậy của các phiên bản mã trong tương lai của bạn hơn là cố gắng sử dụng các nhận xét để điều khiển một người không biết tương lai đi đúng hướng. Đồng thời bạn cũng muốn tránh tăng trưởng quá mức, vì con người nổi tiếng là không tốt trong việc dự đoán tương lai, và điều đó bao gồm cả tương lai của những thay đổi chương trình. Vì vậy, hãy cố gắng xác định và nắm bắt các khía cạnh hợp lý và đã được chứng minh của tương lai ở tất cả các cấp thiết kế chương trình, nhưng đừng


3

Trong mã riêng của mình, tôi sẽ thường xuyên để lại các tautology bình luận, bao gồm cả những thứ đặc biệt nghiêm trọng như:

<?php
// return the result
return $result;
?>

... Điều này rõ ràng đóng góp rất ít về mặt làm cho mã dễ hiểu hơn từ góc độ giải thích.

Tuy nhiên, trong suy nghĩ của tôi, những nhận xét này vẫn có giá trị, nếu chúng giúp duy trì tính nhất quán trực quan của các mẫu màu trong cú pháp tô sáng của bạn .

Tôi nghĩ rằng mã có cấu trúc rất giống với ngôn ngữ tiếng Anh, trong đó có "câu" và "đoạn văn" (mặc dù một "đoạn" có thể bao gồm hoàn toàn một "câu"). Tôi thường bao gồm một ngắt dòng và tóm tắt một dòng trên mỗi "đoạn". Ví dụ:

<?php
//get the id of the thing
$id = $_POST['id'];

//query the things out of the the database
$things = array();
$result = mysql_query("SELECT * FROM Things WHERE `id` = $id");
while ($row = mysql_fetch_assoc($result)) {
    //create a proper Thing object or whatever
    $things[] = new Thing($row);
}

//return the things
return $things;
?>

(Bỏ qua mã không đầy đủ, SQL tiêm, v.v. Bạn có ý tưởng.)

Đối với tôi, bình luận cuối cùng thực sự bổ sung giá trị cho mã, đơn giản vì nó giúp phân định trực quan một "đoạn" từ một đoạn khác bằng cách duy trì một sơ đồ tô màu nhất quán.


Tôi đang có một thời gian khó khăn để làm nổi bật cú pháp để làm việc trong câu trả lời của tôi ở đây. Nếu một số biên tập viên có thể đến sau lưng tôi và khiến nó hoạt động, tôi thực sự đánh giá cao nó, vì màu sắc có ý nghĩa đối với lập luận của tôi.
Chris Allen Lane


2

Bình luận nên được sử dụng để làm một trong những điều sau đây.

  1. Thông tin cho các trình tạo tài liệu để lấy. Điều này không thể được đánh giá thấp, điều này là vô cùng quan trọng.
  2. Cảnh báo về lý do tại sao một đoạn mã là như vậy, và những điều cần cân nhắc khác. Tôi đã xử lý mã được viết bằng 2 ngôn ngữ lập trình. Một phần quan trọng của điều này là có một cấu trúc chung giữa hai ngôn ngữ. Một nhận xét ở cả hai địa điểm thông báo cho người dùng rằng nếu họ thay đổi số này, họ cũng cần thay đổi một số khác là vô cùng hữu ích.
  3. Viết ghi chú để giải thích tại sao một đoạn mã trông đặc biệt kỳ lạ lại như vậy. Nếu bạn phải suy nghĩ về cách làm cho một đoạn mã hoạt động theo một cách cụ thể và giải pháp không rõ ràng ngay từ đầu, có lẽ bạn nên giải thích về những gì bạn đang cố gắng làm.
  4. Dán nhãn đầu vào / đầu ra, nếu chúng không rõ ràng. Thật tốt khi biết đầu vào của bạn dự kiến ​​là gì và chúng ở định dạng nào.

Bình luận không nên được sử dụng để làm như sau:

  1. Giải thích những điều cực kỳ rõ ràng. Tôi đã từng thấy mã di sản như thế này : page=0; // Sets the page to 0. Tôi nghĩ rằng bất kỳ cá nhân có thẩm quyền có thể tìm ra điều đó.

2

Tôi sẽ loại bỏ tautology nhưng giữ bình luận, tôi sẽ bình luận các thuộc tính và tên biến bằng cách đưa ra một giá trị mẫu, để việc sử dụng được hiểu rõ ràng:

property UpdateLocation:TUpdateLocation;  // url="http://x/y/3.2/upd.aspx",proto=http

Bây giờ tôi biết chính xác những gì đi vào đó, và từ nhận xét, tôi có một ý tưởng rõ ràng về cách sử dụng nó.


0

Tôi muốn nói rằng nó phụ thuộc vào mục đích của các bình luận.

Nếu chúng được sử dụng để tạo tài liệu để nhóm xây dựng sử dụng (hoặc nếu chúng chỉ là những bình luận nội tuyến để giải thích mọi thứ), thì tôi nghĩ có thể chấp nhận bỏ qua điều đó. Có thể giả định một cách an toàn rằng nó tự giải thích; và khi không, có những thành viên khác trong nhóm có thể giải thích điều đó. Tất nhiên, nếu nó không hiển nhiên đối với nhiều người, bạn nên thêm nó vào.

Nếu các ý kiến ​​sẽ tạo tài liệu cho một số nhóm ở xa về mặt địa lý, thì tôi sẽ đặt mọi tài liệu vào đó.


0

Tôi nghĩ chủ đề này đã được thảo luận khá rộng rãi dưới những cái tên như "bình luận: chống mẫu" hoặc "bình luận có phải là mùi mã không?" ( một ví dụ ).

Tôi có xu hướng đồng ý với ý kiến ​​chung rằng các bình luận nên thêm thông tin mới, không trùng lặp. Bằng cách thêm các nhận xét tầm thường như thế, bạn đang vi phạm DRY và giảm tỷ lệ tín hiệu thành nhiễu của mã. Tôi có xu hướng tìm các bình luận cấp cao giải thích các trách nhiệm, lý do đằng sau và việc sử dụng ví dụ của lớp hữu ích hơn nhiều so với các bình luận trên mỗi tài sản (đặc biệt là các bình luận thừa).

Cá nhân, trong ví dụ của bạn, tôi sẽ để lại nhận xét (nếu thực sự không có gì hữu ích để thêm về tài sản).


0

Nếu bạn có thể viết mã không yêu cầu bình luận thì bạn đã đạt được niết bàn lập trình!.

Càng ít bình luận mã của bạn yêu cầu mã càng tốt!


3
Điều này là không thể (và sẽ không bao giờ). Luôn có rất nhiều thứ bị bỏ lại phía sau mã - các giả định ngầm định, các quyết định kiến ​​trúc, các chuỗi biến đổi toán học dài kết thúc bằng một thuật toán cụ thể, v.v.
SK-logic

1
Có lẽ "Xin chào thế giới!" là niết bàn lập trình rồi ...
naught101

: -} - Đó là một điều rất hiếm khi đạt được - vấn đề là nếu bạn gặp khó khăn trong việc tìm kiếm một bình luận có ý nghĩa thì hãy hài lòng với chính nó có nghĩa là mã của bạn vừa phải!
James Anderson

0

Một nhận xét như thế là vô ích; tôi đang làm gì sai

Nó chỉ có vẻ vô dụng nếu bạn đã biết những gì UpdateLocationlàm. Là "cập nhật" ở đây một động từ hoặc một danh từ bổ trợ? Đó là, đây là cái gì đó cập nhật vị trí, hay nó là vị trí của bản cập nhật? Người ta có thể suy ra cái sau từ thực tế UpdateLocationrõ ràng là một tài sản, nhưng điểm lớn hơn là đôi khi nó không gây hại gì khi nói rõ ràng một cái gì đó có vẻ rõ ràng.


0

Tự động biên dịch tài liệu sang một bên, mã nên tự tạo tài liệu, để các bình luận chỉ nên ghi lại tài liệu khi mã không đủ để tự tạo tài liệu.


-1

"Vị trí" là một điều hiển nhiên, nhưng "Cập nhật" có thể hơi mơ hồ. Nếu bạn không thể viết một cái tên tốt hơn, thì bạn có thể cung cấp chi tiết hơn trong bình luận không? Cập nhật những gì? Tại sao chúng ta cần điều này? Một số giả định (là null cho phép) là gì?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.