Hướng dẫn python line length 80 or 120 - chiều dài dòng trăn 80 hoặc 120

Tôi là một lập trình viên phải đối phó với rất nhiều mã hàng ngày. Nguồn mở và những gì đã được phát triển trong nhà.

Là một lập trình viên, tôi thấy rất hữu ích khi mở nhiều tệp nguồn cùng một lúc và thường tổ chức máy tính để bàn của tôi trên màn hình (màn hình rộng) của tôi để hai tệp nguồn nằm cạnh nhau. Tôi có thể đang lập trình trong cả hai, hoặc chỉ đọc một và lập trình trong cái kia.

Tôi thấy nó không hài lòng và bực bội khi một trong những tệp nguồn đó có chiều rộng> 120 ký tự, bởi vì điều đó có nghĩa là tôi không thể thoải mái phù hợp với một dòng mã trên một dòng màn hình. Nó làm đảo lộn định dạng để bọc dòng.

Tôi nói '120' bởi vì đó là cấp độ mà tôi sẽ cảm thấy khó chịu khi mã rộng hơn. Sau nhiều ký tự, bạn nên chia tách trên các dòng để đọc, chứ đừng nói đến các tiêu chuẩn mã hóa.

Tôi viết mã với 80 cột trong tâm trí. Đây chỉ là khi tôi rò rỉ qua ranh giới đó, đó không phải là một điều xấu.

Này các bạn,

Tôi đã lập trình khoảng 15 năm nay và gần đây tôi đã có một công việc tại một cửa hàng khăng khăng về giới hạn dòng 80 nhân vật. Điều này dường như là mâu thuẫn với tất cả các thực hành lập trình mà tôi đã học được từ khi học đại học vì:

  1. Tên biến mô tả làm cho mã dễ đọc và hiểu dễ dàng hơn nhiều

  2. Phương pháp lớp học mô tả chỉ là thực hành lập trình tuyệt vời

  3. khoảng trắng trong Python vấn đề (câu lệnh IF trong vòng lặp theo phương pháp lớp mất 12 ký tự

  4. Một định dạng chuỗi cuối cùng trông thực sự kỳ lạ vì về cơ bản nó kết thúc là một loạt khoảng trắng ở bên trái và một loạt các văn bản ở bên phải

  5. Chuỗi logic kéo dài nhiều dòng khó đọc hơn nhiều

Đến 1 và 2, tôi thực sự đọc rằng mọi người sẽ thích tên biến và tên lớp ngắn hơn trong khi bắt buộc viết thường và nhấn mạnh. Điều đó dường như mâu thuẫn với nhau. Ngoài ra, thành thật mà nói, "sử dụng tên ngắn hơn" có vẻ như là một ý tưởng cực kỳ ngu ngốc giống như cách sử dụng X cho tất cả các biến của bạn là một ý tưởng cực kỳ ngu ngốc.

3 là kicker thực sự ở đây. Mỗi ý định chiếm không gian và đưa ra các quy tắc định dạng, nó dẫn đến mã trông rất lạ. Ví dụ: nếu var1 trong một câu lệnh như .format (var1, bắt đầu trên cột 55, biến tiếp theo sẽ bắt đầu trên cột 55 trên một dòng mới. Nhiều biến làm cho nó trông giống như một khối mã, rất lạ khi thấy. Nó là Hầu như chói tai, giống như khối mã này có tầm quan trọng hơn vì nó được phát âm trong mã.

Đối với 5, tôi thấy vấn đề nhất này với các truy vấn SQL nhưng tôi có thể dễ dàng thấy đây là một mớ hỗn độn với Argparse. Trên thực tế, tôi thực sự không thấy làm thế nào Argparse có thể tồn tại trong tiêu chuẩn này. Dường như không có một cách tuyệt vời để truyền một tên ngắn, tên dài, số lượng đối số, yêu cầu, giá trị mặc định, bộ đối số phụ, thông báo trợ giúp, v.v. Không có nó trông không thể đọc được.

Nó cảm thấy thực sự kỳ lạ như những quy tắc này xuất hiện từ thời c. Trong C, tôi có thể dễ dàng thấy làm thế nào một giới hạn dòng 80 char có ý nghĩa. Tất cả mọi thứ là một tệp phẳng và 4 indents có thể có nghĩa là điều gì đó xấu đã xảy ra trong mã của bạn và bạn có thể cần nhiều chức năng hơn. Ở đây, 4 indents là một điều kiện trong vòng lặp cho một phương thức trong một lớp. Tôi không biết, bất kỳ lời khuyên hoặc thủ thuật để đi xung quanh này? Nó thậm chí còn đáng để làm việc xung quanh? Có vẻ như đây là một kẻ giết người năng suất khổng lồ với bản thân tôi dành nhiều thời gian hơn nhiều so với việc viết mã thực tế.

Các nhà phát triển phần mềm đã giành chiến thắng trong việc hết các đối tượng để tranh luận và chiến đấu. Một số trong số chúng có thể là nền tảng cho một dự án - như lựa chọn ngôn ngữ hoặc mô hình lập trình để bắt đầu. Những người khác dường như là một sở thích cá nhân lúc đầu, nhưng cuối cùng có thể kết thúc cơ bản như nhau ở quy mô lớn hơn - như cách chọn nhân vật để thụt vào, nơi đặt niềng răng xoăn, hoặc cách xử lý các lần phá vỡ đường. Mới nhất khi có nhiều hơn một nhà phát triển hợp tác, đó là thời gian để tìm một thỏa thuận chung dưới dạng hướng dẫn kiểu mã hóa, tất nhiên có thể đòi hỏi một chút thỏa hiệp.

Bất kể hương vị nào, quyết định tồi tệ nhất là không có quyết định, và ngay cả khi bạn không đồng ý với một chi tiết cụ thể, thì nó thường tốt nhất để làm hòa với nó vì lợi ích của mã được định dạng thống nhất. Trong một môi trường chuyên nghiệp, một hướng dẫn phong cách đã được hợp tác lý tưởng trong hoặc giữa các đội, và đầu vào và ý kiến ​​của mọi người liên quan đã được xem xét một về phía lối ra.

Tình hình có thể phức tạp hơn một chút trong các dự án nguồn mở, tùy thuộc vào cấu trúc và quy mô của một dự án. Nếu không có hướng dẫn phong cách chính thức nào tồn tại, điều duyên dáng phải làm là chỉ cần áp dụng phong cách hiện tại của Code Base khi đóng góp cho nó. Nhưng các dự án lớn hơn đã quen với vô số người đóng góp ngẫu nhiên thường sẽ có một người được xác định, được các nhà phát triển cốt lõi, hoặc được tuyên bố bởi nhà độc tài nhân từ của nó suốt đời.

Trong trường hợp của hạt nhân Linux, tất nhiên là [Linus Torvalds], người gần đây đã làm rung chuyển cộng đồng với một phản hồi danh sách gửi thư tuyên bố một quy tắc quá phổ biến, thậm chí còn bất thành văn về định dạng mã là lỗi thời: giới hạn dòng 80 ký tự. Xem xét sự nổi tiếng của những lời nói và sự thô lỗ của anh ta, phản ứng của anh ta, được bắt đầu bởi một sự thay đổi phá vỡ dòng trong bản vá đã gửi, dường như hết sức ngoại giao lần này.

. Như ông nói, lý do duy nhất để tuân thủ giới hạn là sử dụng VT100 thực tế, trong đó đã giành được nhiều sự sử dụng trong phát triển kernel.

Mặt khác, cho phép các dòng dài hơn sẽ khuyến khích việc sử dụng nhiều tên biến và khoảng trắng hơn, từ đó thực sự sẽ làm tăng khả năng đọc. Tất nhiên, tất cả ở một mức độ nhất định và [Linus] rõ ràng không kêu gọi xóa bỏ các dòng phá vỡ hoàn toàn. Nhưng anh ta có một điểm; Liệu nó có thực sự có ý nghĩa khi bám vào một thập kỷ cũ, ngày nay là giới hạn khá độc đoán vào năm 2020?

Độ dài dòng trong suốt lịch sử

Giới hạn đó đến từ đâu? Có vẻ như một trong những điều mà mọi người đều biết và theo sau mà không đặt câu hỏi hoặc thực sự hiểu nó. 80 ký tự nằm xung quanh chúng ta - có những thiết bị này của năm qua với 80 màn hình ký tự của chúng, trình giả lập thiết bị đầu cuối của bạn có chiều rộng mặc định được đặt trước đến 80 cột, và tất nhiên tất cả các hướng dẫn kiểu mã hóa tiếp tục đưa ra giới hạn dòng 80 ký tự. Tất cả chỉ có vẻ kỳ diệu đến với nhau bằng cách nào đó, và đó là cách mà mọi thứ, thời kỳ. Vâng, điều đó đã giúp đỡ tất cả bây giờ, phải không? Vì vậy, hãy để Lùi lùi một vài bước.

Hướng dẫn python line length 80 or 120 - chiều dài dòng trăn 80 hoặc 120
Tất cả bắt đầu ở đây.

Có, kể từ những ngày đầu của các thiết bị đầu cuối, kích thước màn hình thực sự chủ yếu giới hạn ở 80 ký tự. Có những trường hợp ngoại lệ theo một trong hai hướng, 72 và 132 chẳng hạn, nhưng 80 là cái phổ biến nhất. Xem xét chúng tôi nói về cuối những năm 1960 ở đây, có vẻ hợp lý khi công nghệ hiển thị chỉ đơn giản là không đủ để làm cho việc có màn hình lớn hơn và đường dài hơn, và đó là cách mà họ kết thúc với 80 ký tự. Nhưng đó cũng không phải là nó.

Chắc chắn, công nghệ hiển thị của Bang thập niên 1960 chắc chắn cũng có một số tác động, nhưng sự lựa chọn cuối cùng đã được tạo ra từ thói quen hơn là cần thiết. Quay trở lại thời điểm đó, khi các thiết bị đầu cuối đầu tiên được thiết kế, những người làm việc với bất cứ thứ gì giống như máy tính chủ yếu biết một phương tiện lưu trữ phổ biến: thẻ đục lỗ. Ngôi sao thời bấy giờ, thống trị ngành công nghiệp, là IBM 80 cột bằng thẻ 12 hàng. Và tốt, đó là khá nhiều nó.

Sự phổ biến của thẻ cụ thể đó dẫn đến quyết định sử dụng cùng một lượng cột trên các thiết bị đầu cuối, từ đó định nghĩa nó là tiêu chuẩn vàng cho các kiểu mã hóa, vẫn còn được sử dụng rộng rãi cho đến ngày nay. Theo một cách có thể hiểu được, việc xem xét thẻ đấm 80 × 12 hoàn toàn theo nghĩa đen là phát minh lớn nhất kể từ thời điểm bánh mì cắt lát - vì cả hai đã được tiết lộ cho thế giới vào tháng 7 năm 1928. Vâng, toàn bộ nguồn gốc của 80 ký tự về cơ bản có từ năm 1928 .

(Đơn xin cấp bằng sáng chế của thẻ được nộp ngày 20 tháng 7 năm 1928, bánh mì cắt lát đầu tiên được bán vào ngày 7 tháng 7 năm 1928)

Độ dài dòng ngày nay

Vì vậy, chúng ta ở đây, gần một thế kỷ sau, vẫn vắt văn bản trong cùng 80 dòng nhân vật. Chà, không phải ở khắp mọi nơi, một số ngôn ngữ nhìn thấy nó khác nhau ngày hôm nay, và nếu không, các khung có thể đi kèm với hướng dẫn riêng của họ. Nhưng trong khi chúng ta có màn hình lớn hơn theo ý của chúng ta ngày nay, các dòng dài cuối cùng sẽ can thiệp vào lĩnh vực tầm nhìn của chúng ta. Nói cách khác, đòi hỏi chúng ta phải di chuyển mắt, hoặc thậm chí toàn bộ đầu, phá vỡ luồng đọc và tăng rủi ro để bỏ qua một cái gì đó quan trọng.

Sau đó, một lần nữa, cuộc thảo luận không phải là về việc loại bỏ các giới hạn dòng hoàn toàn, nhưng thách thức một giới hạn 80 nhân vật được thi hành, khó khăn. Từ quan điểm của sự thoải mái khi đọc, sự khác biệt giữa 80 và 85 chẳng hạn là không đáng kể và nhấn mạnh vào ý chí trước đây dẫn đến việc phá vỡ dòng vụng về - như một [Linus] được giải quyết - và trường hợp xấu nhất đối với các tên biến mật mã và các tên biến khác định dạng đáng ngờ.

Một thỏa hiệp chung là khuyến khích 80 ký tự, nhưng cho phép tối đa 100 hoặc 120 ký tự và vẽ giới hạn cứng ở đó. Bằng cách này, nếu bạn vượt quá giới hạn mềm, bạn không phải đổ mồ hôi quá nhiều, và vào thời điểm bạn đạt đến giới hạn cứng, có đủ chỗ để chia các đường theo cách mạch lạc.

Trong một thế giới lý tưởng, không ai trong số này sẽ quan trọng nhiều, và một IDE sẽ xử lý tất cả những điều đó một cách minh bạch cho chúng ta. Chúng tôi sẽ định cấu hình giới hạn hướng dẫn kiểu, và thêm giới hạn ưa thích của chúng tôi. IDE trình bày mã khi chúng tôi thích nó, và lưu nó theo cách hướng dẫn kiểu yêu cầu.

Mặc dù điều đó hoạt động khá ổn với những thứ như phong cách thụt lề, nhưng việc phá vỡ dòng không may phức tạp hơn rất nhiều. Đâu là nơi phù hợp để chia để giữ mã có thể đọc được và bảo tồn các khối logic? Nếu được thực hiện một cách ngây thơ bằng cách phá vỡ sự phá vỡ đường dây, chúng tôi sẽ chính xác trở lại tại điểm [Linus Torvalds] đang cố gắng thực hiện. Có lẽ việc học máy đưa chúng ta đến đó trong tương lai, nhưng cho đến lúc đó, chúng tôi tự mình.

Giới hạn của bạn là gì?

Vì vậy, những gì bạn có thể đảm nhận tất cả những điều này? Bạn có bộ giới hạn độ dài dòng của bạn ở đâu? Và các dự án phụ của bạn có khác với môi trường làm việc của bạn ở đây không?

Bạn có đồng ý với [Linus] và nói đủ với sự điên rồ 80 nhân vật bắt buộc không? Hay bạn thích những dòng thậm chí ngắn hơn?

Hãy cho chúng tôi biết trong các ý kiến!

Các dòng Python nên kéo dài bao lâu?

Thư viện tiêu chuẩn Python là bảo thủ và yêu cầu giới hạn các dòng cho 79 ký tự (và tài liệu/nhận xét đến 72). Cách ưa thích để gói các đường dài là bằng cách sử dụng tiếp tục dòng ngụ ý của Python bên trong ngoặc đơn, ngoặc và thanh giằng.79 characters (and docstrings/comments to 72). The preferred way of wrapping long lines is by using Python's implied line continuation inside parentheses, brackets and braces.

Độ dài dòng tối đa tốt là gì?

Các tiêu chuẩn mã khác trong danh sách cũng khuyến nghị rằng giới hạn nên được bỏ qua khi điều đó làm cho mã dễ đọc hơn. Một ví dụ phổ biến là một url dài được dán vào mã nguồn. Nhằm mục đích cho chiều dài tối đa khoảng 80 đến 100 ký tự mỗi dòng, nhưng bạn không cần phải theo dõi nó một cách tôn giáo.80 to 100 characters per line, but you don't have to follow it religiously.

Tại sao chiều dài 80 dòng?

Giới hạn của độ dài dòng trong 70 ký tự80 có thể bắt nguồn từ các giới hạn kỹ thuật khác nhau của các thiết bị khác nhau.Các teletypewriter của Mỹ chỉ có thể gõ 72 CPL, trong khi những người Anh thậm chí còn ít hơn, 70 CPL.Trong kỷ nguyên của các máy đánh chữ, hầu hết các thiết kế của xe đánh chữ đều được giới hạn ở 80 CPL90 CPL.originated from various technical limitations of various equipment. The American teletypewriters could type only 72 CPL, while the British ones even less, 70 CPL. In the era of typewriters, most designs of the typewriter carriage were limited to 80–90 CPL.

Các dòng mã nên kéo dài bao lâu?

Lý tưởng nhất, một dòng mã là một yếu tố đơn vị có nghĩa là hoặc thực hiện một cái gì đó cụ thể - một phần của câu nếu bạn muốn.Người ta thường đồng ý rằng độ dài lý tưởng cho một dòng mã là từ 80 đến 100 ký tự.80 to 100 characters.