Đặt tên mô tả so với 80 dòng ký tự [đóng]


17

Tôi thường nghe thấy hai thực tiễn lập trình có giá trị này: (1) dòng mã nên có 80 ký tự trở xuống và (2) sử dụng tên mô tả cho các biến, phương thức, lớp, v.v. Tuy nhiên, tôi hiểu lý do cho cả hai từ này. , họ dường như thường là sự đánh đổi của nhau. Nếu tôi giữ mã của mình dưới 80 ký tự / dòng thì cuối cùng tôi sẽ sử dụng các tên mô tả ít hơn (đặc biệt là trong Python trong đó mỗi ký tự được tính là 4 ký tự) nhưng nếu tôi sử dụng các tên mô tả nhiều hơn, tôi sẽ kết thúc bằng các dòng trên 80 ký tự.

Vì vậy, câu hỏi của tôi là hai trong số những lời khuyên này là quan trọng hơn để tuân theo nếu sự lựa chọn phải được thực hiện? Tôi tự hỏi đây là một lập trình viên độc lập (có sở thích), nhưng quan trọng hơn là từ quan điểm của một kỹ sư phần mềm làm việc cho một công ty lớn hơn.


4
@BillyONeal Với màn hình lớn, 120 :)
Bовић

4
Tôi nghĩ rằng tôi cần ít nhất 130
9dan

8
Tôi thích 80, vì sau đó tôi có thể dễ dàng mở 2 tệp cạnh nhau trên sổ ghi chép của mình.
Honza Brabec

5
Các dòng dài hơn 80 ký tự có xu hướng không thể đọc được. Vì vậy, 80 là một giới hạn tốt. Mô tả không cần quá dài dòng. Và nó phụ thuộc vào phạm vi: tên biến phạm vi nhỏ phạm vi nhỏ, tên dài phạm vi lớn. Và bằng mọi cách tránh các biến có phạm vi lớn. Nếu bạn đang ở đó, hãy sử dụng ngôn ngữ chức năng và phá mã của bạn thành các hàm nhỏ hơn khi nó thụt quá sâu -> phạm vi rất nhỏ == tên biến thể ngắn. Tên hàm tương tự nhưng thường dài hơn một chút vì phạm vi của chúng lớn hơn.
Peer Stritzinger

4
@ ott--: Bạn đã thấy một trình soạn thảo, thực sự có thể phá vỡ một dòng dài, theo cú pháp C ++, và trình bày phần tiếp tục thụt lề một cấp hơn so với đầu? Nếu không thì đề nghị như vậy là vô ích.
Jan Hudec

Câu trả lời:


34

Giữ ít thông tin, tên của bạn được mô tả và đừng sợ phá vỡ một dòng.

Giữ ít thụt lề của bạn.

Thông thường khi tôi thấy mình trong một cuộc đấu tranh giữa việc thụt lề và đặt tên mô tả, tôi lùi lại một bước và xem xét mức độ chỉ định của mình. Nếu bạn thụt lề quá 3 hoặc 4 cấp độ (2 cấp độ là tự động và không thể tránh khỏi trong nhiều trường hợp. Đọc: định nghĩa phương thức lớp), bạn có thể muốn cấu trúc lại mã của mình, trừu tượng hóa chức năng cho một chức năng hoặc phương thức.

Tên của bạn mô tả

Bạn nên luôn luôn giữ tên của bạn mô tả. Tên mô tả tạo mã tự ghi. Bạn có thể cố gắng rút ngắn tên trong một số trường hợp, nhưng khả năng đọc đến trước.

Đừng sợ phá vỡ một dòng

Chết tiệt xảy ra. Nếu bạn vượt quá 80 ký tự và dù sao bạn cũng không thấy lấy lại bất kỳ khoảng trống nào trong dòng - hãy phá vỡ nó. Hầu hết các ngôn ngữ không quan tâm đến ngắt dòng, vì vậy hãy chia dòng thành nhiều. Đừng chỉ chọn một vị trí ngẫu nhiên. Giữ mọi thứ được nhóm lại một cách hợp lý và thụt lề ở cấp độ khác khi bạn ngắt dòng.


3
Cần lưu ý rằng tên mô tả không giống với tên dài. Tránh lặp lại những thứ có thể dễ dàng nhìn thấy từ ngữ cảnh và một số từ viết tắt được lựa chọn cẩn thận (chỉ dành cho các khái niệm rất phổ biến) có thể đi một chặng đường dài đối với các tên mô tả ngắn.
Jan Hudec

18

Tại sao không phải là cả hai?

Trước hết, "mô tả" và "dài dòng" không giống nhau. Ví dụ: nếu bạn đang viết một vòng lặp khá cục bộ, ilà một tên biến rất tốt cho biến vòng lặp; current_iteration_index, trong khi có thể mô tả nhiều hơn và chắc chắn dài dòng hơn, thì tệ hơn nhiều và không thêm bất kỳ thông tin nào, bởi vì việc sử dụng inhư một biến vòng lặp được chấp nhận rộng rãi và không có ý nghĩa nào khác ihơn thế.

Tên biến tốt là mô tả, trong đó một lập trình viên quen thuộc với thành ngữ của ngôn ngữ và các quy ước của cơ sở mã hóa có thể dễ dàng đoán được vai trò của họ là gì, nhưng chúng cũng đủ ngắn gọn để giữ cho mọi thứ nhỏ gọn.

Giới hạn 80 ký tự, mặc dù ban đầu là hậu quả của các hạn chế kỹ thuật của thiết bị đầu cuối văn bản năm 1970, vẫn được nhiều người coi trọng ngày nay và mặc dù vẫn có những lý do kỹ thuật (độ dài dòng tối đa trong một số giao thức mạng, đáng chú ý nhất là liên quan đến e-mail), những lý do hấp dẫn hơn là tâm lý và xã hội. Nó chỉ ra rằng độ dài dòng xung quanh dấu 66 ký tự mang lại trải nghiệm đọc thoải mái nhất cho văn xuôi ngôn ngữ tự nhiên (kích thước phông chữ thú vị không tạo ra nhiều khác biệt, và do đó, cả màn hình hay khổ giấy); Giới hạn dòng 80 ký tự khá gần với giới hạn đó, nhưng vì phần lớn một đoạn mã thông thường thường được thụt vào ít nhất một hoặc hai cấp (có nghĩa là từ 4 đến 16 ký tự, tùy thuộc vào cài đặt thụt lề),

Một tác dụng khác của việc gắn bó với các dòng 80 ký tự là đó là một chỉ báo khá hay về thời điểm mọi thứ quá phức tạp. Các dòng dài thường được gây ra bởi một trong những điều sau đây:

  • Các hàm với một danh sách dài các đối số; đây không phải là một điều tốt đẹp vì chúng cản trở khả năng đọc và có thể dễ dàng gây ra các lỗi tinh vi, ví dụ như khi mọi người trao đổi thứ tự đối số theo cách mà trình biên dịch không nắm bắt được.
  • Biểu thức phức tạp, thường được tìm thấy trong các điều kiện (ví dụ if ((user.isLoggedIn && user.hasPermission(page.getRequiredPermission()) && !user.isBanned) || page.getRequiredPermission() == null)); điều này cũng thường khá khó để giải mã và mã nên được viết lại thành một cái gì đó có cấu trúc hơn. Rất có thể, biểu thức thực hiện quá nhiều và nên được đưa vào một phương thức hoặc hàm.
  • Chữ dài được sử dụng trong các cuộc gọi chức năng hoặc biểu thức, ví dụ print(translate(LANG_EN, LANG_ES, "This is the home page. Feel welcome to click around and see what we have."));. Di chuyển nghĩa đen thành một biến hoặc hằng; nó vẫn có thể vượt quá độ dài dòng, nhưng nếu bạn thực hiện một cách nhất quán, người đọc ít nhất có thể bỏ qua phần vô hình của dòng một cách an toàn, giả sử rằng chỉ có phần còn lại của nghĩa đen theo sau. Hoặc tốt hơn nữa, di chuyển các chữ ra khỏi mã và vào một kho lưu trữ dữ liệu ngoài (tệp, cơ sở dữ liệu, bất cứ thứ gì).
  • Các câu lệnh lồng nhau sâu, ví dụ sáu mức ifcâu lệnh trong một phương thức lớp (đó là 32 cột thụt cho các cài đặt điển hình). Một lần nữa, việc làm tổ sâu tạo ra mã phức tạp và khó đọc, và nên tránh như bệnh dịch hạch - nói một cách đơn giản, việc làm tổ sâu tràn qua ngăn xếp của bộ não con người trong khi đọc.

Tất cả những điều này cuối cùng là triệu chứng của những thứ bạn không muốn có trong cơ sở mã của mình trong thời gian dài và thực thi các giới hạn 80 ký tự là một cách hay và đơn giản giúp giảm độ phức tạp và dễ đọc. (Điều đó không có nghĩa là bạn không thể viết mã hoàn toàn không thể đọc được trong 80 cột: các cuộc thi mã bị che khuất khác nhau là một ví dụ phản đối rõ ràng).


1
+1: Câu trả lời tuyệt vời ngoại trừ tôi không đồng ý với việc di chuyển chữ ra khỏi mã. Khi bạn biết bạn đang tìm kiếm nghĩa đen nào, bạn có thể grep cho nó trong tài nguyên hoặc mã tốt như nhau, nhưng khi bạn đang làm việc với mã và cần sửa đổi nghĩa đen, việc phải tìm kiếm nó trong tệp riêng biệt là một điều khá phiền nhiễu. Cũng lưu ý rằng tất cả các ngôn ngữ đều có một số cách chia chữ thành nhiều dòng, đó là những gì tôi sẽ làm trong trường hợp đó.
Jan Hudec

Tất nhiên câu được sử dụng như ví dụ về nghĩa đen dài không có chỗ sống trong mã nguồn. Những thứ như thế này đi trong các mẫu trang. Nhưng đối với những thứ như thông báo lỗi, tôi thích giữ chúng với mã phát ra chúng.
Jan Hudec

@JanHudec: Chắc chắn, việc chuyển các chữ thành tệp dữ liệu không phải lúc nào cũng có ý nghĩa. Mặc dù vậy, tôi đang nói về những chữ quá dài và với những thứ đó, tôi hiếm khi thấy một dịp mà việc định nghĩa chúng ở nơi khác sẽ làm cho mã trở nên tồi tệ hơn: độ dài của văn bản gây khó chịu cho việc đọc, trong khi ý nghĩa của nó có thể dễ dàng cô đọng thành một tên hằng hoặc biến, sau đó bạn xác định ở nơi khác. Thông báo lỗi là một cuộc gọi phán xét, tôi đoán.
tdammers

16

Đặt tên mô tả là bởi FAR quan trọng hơn. Trong hầu hết các giao diện, chúng ta có thể cuộn để xem các dòng dài hơn. Trong mọi trường hợp, hệ thống có thể giúp bạn dịch các biến và hàm được đặt tên kém.


2
Điều này. Dừng ngắt dòng trên các ký tự X, hãy để IDE xử lý việc đó. Mặc dù bạn làm phiền tất cả những người dùng khác (bao gồm cả bạn trong tương lai!) Những người có màn hình / IDE có thể xử lý các ký tự 2 * X với mã không còn phù hợp trên một trang nữa.
Konerak

4
Câu hỏi mặc nhiên về tên dài mặc dù. Và tôi không đồng ý rằng tên nên dài - hầu hết thời gian chúng nên ngắn . Tên mô tả, dài có thể làm cho mã khó đọc hơn tên mô tả ít hơn một chút nhưng ngắn hơn! (Các dòng quá dài thường khó đọc.)
Konrad Rudolph

4
Tôi không đồng ý. Nếu tôi không thể nhìn thấy mã ngay lập tức, thật khó đọc, bất kể tên mô tả như thế nào.
Jan Hudec

4

80 ký tự trên mỗi dòng không khó để đáp ứng ngay cả việc đặt tên rất dài vì có nhiều cách để chia một dòng mã dài thành nhiều mã ngắn, ví dụ: tôi có thể chia một câu lệnh điều kiện trong C thành nhiều dòng để phù hợp với ít hơn 40 nhân vật,

if ( a == b || c == d  || d == e
    || c == e || c == a || c == k
    || c == l)

bạn cũng có thể chia một dòng hàm gọi thành nhiều dòng.

Do đó, cả hai quy tắc đặt tên mô tả và 80 dòng ký tự không có mâu thuẫn, chúng có thể cùng tồn tại để cải thiện khả năng đọc.


2
Liệu 80 ký tự có thực sự cải thiện khả năng đọc? Màn hình nào không thể dễ dàng làm 120 ngày nay?
Billy ONeal

7
@BillyONeal Dễ dàng quét hơn 80 chiều rộng hơn 120 chiều rộng
ratchet freak

2
tờ báo chia thành các cột và bạn có thể có thêm thông tin từ ux ux.stackexchange.com/questions/3618/iêu
neo

1
Việc phá vỡ một điều kiện logic giúp cải thiện khả năng đọc khi ngắt dòng tương ứng với cấu trúc của điều kiện, nhưng không nhất thiết nếu chúng chỉ tương ứng với một số giới hạn tùy ý.
mikołak

1
@BillyONeal: hầu hết các màn hình có thể làm 120, nhưng hầu như không thể làm được 240. Hoặc bạn không bao giờ so sánh diffs?
Hubert Kario

0

Giới hạn 80 là thứ đáng lẽ phải được tăng lên từ lâu. Lưu ý rằng giới hạn này được sử dụng kể từ tuổi khi độ dài của mỗi số nhận dạng bị giới hạn ở 8 ký tự và chỉ có một phông chữ trên màn hình / máy in. Không có khả năng thay đổi kích thước phông chữ.

Chúa ơi, chúng ta có màn hình và công nghệ in ấn khác nhau. Chúng tôi có ngôn ngữ lập trình rất khác nhau. Không có lý do để sử dụng 80 ký tự nữa. Tăng ít nhất lên 120 ký tự.

Ngay cả sau đó nó không phải là một giới hạn cứng. Bạn đi một nhân vật trên dòng? Chà, không có gì xảy ra!

Biên tập:

Câu trả lời chi tiết về lịch sử giới hạn 80-char

Ký tự trên mỗi dòng trên Wikipedia

Một nghiên cứu tại Đại học bang Mississippi cho thấy CPL chỉ có tác động nhỏ đến khả năng đọc, bao gồm các yếu tố về tốc độ và sự hiểu biết. Tuy nhiên, khi được hỏi về sở thích, 60% số người được hỏi cho biết ưu tiên cho các dòng ngắn nhất (35 CPL) hoặc dài nhất (95 CPL) được sử dụng trong nghiên cứu. Đồng thời, 100% số người được hỏi đã chọn một trong những đại lượng này là ít mong muốn nhất.


4
Không, giới hạn chắc chắn không nên tăng. Bởi vì nó hoàn toàn không liên quan gì đến công nghệ in và màn hình, chỉ với thực tế là 80 ký tự trên mỗi dòng là mắt người tối đa có thể thoải mái quét (66 ký tự được coi là độ rộng dòng tối ưu, ít hơn trong in nhiều cột). Điều đó có nghĩa là hầu hết các cuốn sách có ít hơn 80 cột cho các mẫu mã.
Jan Hudec

3
@JanHudec Nó có mọi thứ với công nghệ in / màn hình. Tham khảo các lập trình viên.stackexchange.com / questions / 148677 / . Quyết định đi với 80 nhân vật hoàn toàn mang tính lịch sử, không dựa trên các nghiên cứu. Bạn có thể vui lòng thêm liên kết đến các nghiên cứu để xác nhận ý kiến ​​của bạn?
Sulthan

Một câu hỏi khác đã có liên kết UX này trong các bình luận; tham khảo thêm ở đó. Mặc dù số 80 là sự trùng hợp lịch sử, nhưng nó có nguồn gốc từ số lần đình công trên mỗi dòng trên máy chữ, có nguồn gốc gần như từ chiều rộng phổ biến của in một cột và trung bình 66 chữ cái đã được thiết lập từ lâu.
Jan Hudec
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.