2009-02-19 73 views
17

Mỗi chuẩn mã hóa mà tôi từng thấy đều có giới hạn được đề nghị hoặc tuyệt đối về số ký tự trong một dòng. Có nhiều cách khác nhau để làm việc trong giới hạn này, nhưng tôi đã không thấy bất kỳ hướng dẫn cụ thể nào về vấn đề này.Chuẩn mã hóa và chiều dài dòng

Rõ ràng, nếu có thể, đừng viết các dòng quá dài.

Nhưng nếu điều đó không thực tế thì sao? Các đường dài nên được xử lý như thế nào?

Dưới đây là một vài ví dụ

if ($Stmt = $Mysqli->prepare("SELECT color, pattern, size, 
           manufacturer, mfgSku, storeLocation, 
           aisle, status 
           FROM tblItems WHERE ourSku = ?")) { 

hoặc

$flavors = array ('chocolate', 'strawberry', 'vanilla', 'cookie dough', 
        'chocolate chip', 'mint chocolate chip', 'rocky road', 
        'peach', 'fudge brownie', 'coffee', 'mocha chip'); 

hoặc

$Stmt->bind_result($this->_firstName, 
        $this->_lastName, 
        $this->_BillToAddress->address1, 
        $this->_BillToAddress->address2, 
        $this->_BillToAddress->city, 
        $this->_BillToAddress->state, 
        $this->_BillToAddress->zip, 
        $this->_BillToAddress->country, 
        $this->_email, 
        $this->_status, 
        $this->_primaryPhone, 
        $this->_mobilePhone); 

Trong mỗi một trong các ví dụ, các indenting mã dài là khác nhau. Có cách nào tốt hơn hoặc nhiều hơn "tiêu chuẩn" để làm việc này không? Nếu các đường thừa luôn bị thụt vào theo cùng một cách. Hay điều này có được không?

+0

Tôi đã cảm xúc lẫn lộn về vấn đề này. Ban đầu tôi nghĩ dupe kể từ chiều dài dòng và tiêu chuẩn xung quanh nó đã được Trên suy nghĩ thứ hai, tôi nghĩ rằng điều này có thể đủ khác biệt để đứng trên chính nó – EBGreen

+0

Có nói rằng, tôi sẽ đề nghị đọc các câu hỏi khác, nơi chiều dài dòng và làm thế nào để xử lý nó đã bị đánh đến chết. /stackoverflow.com/questions/131468/what-is-a-sensible-maximum-number-of-characters-bên-line-of-code-closed – EBGreen

+0

@EBGreen - Cảm ơn – PartialOrder

Trả lời

10

Có một mẫu bạn có thể thấy trong mỗi ví dụ - chúng được thụt vào tham số đầu tiên của hàm. Đây là một tiêu chuẩn tốt để làm theo khi nó chuyển đổi dữ liệu từ ngang sang dọc và các cột cho phép đọc dễ dàng.

Đối với các vấn đề về độ dài dòng khác, chẳng hạn như tính toán dài, phương pháp ưu tiên là chia nhỏ. Tính toán ngày tháng julian, hoặc phục sinh được thực hiện trong một vài bước thay vì một phép tính dài.

-Adam

0

Tôi không biết tiêu chuẩn nào, vì nó sẽ được khó khăn để nói. Đối với những người trong chúng ta trên màn hình lớn hơn, chúng ta có thể xem mã ngang hơn những người khác trên màn hình nhỏ hơn. Tôi thường cố gắng xây dựng chuỗi dài theo tuần tự thông qua. = (PHP) khi cần thiết và mã của bạn đã chứng minh rằng tôi chia các mảng dài tùy ý thành các dòng mới tùy thuộc vào số ký tự tồn tại trong dòng cụ thể đó.

3

Tôi không nghĩ ai nên cố tình có đường dài nhưng, có nguy cơ vi phạm nhiều, tôi đề nghị độ dài dòng thực sự không còn quan trọng nữa.

Vim và emacs xử lý các dòng dài khá tốt và chúng được cài đặt trên hầu hết mọi hộp Unix. Trên Windows, bạn hầu như luôn ở trong trình soạn thảo văn bản GUI. Tôi nghĩ phong cách $Stmt->bind_result của bạn là dễ đọc nhất, nhưng nếu bạn chỉ cần tải một loạt thông tin chủ yếu là tĩnh trong một câu lệnh, tôi không có vấn đề gì với dòng 1000 ký tự.

+0

và nếu dài line REALLY irks bạn, bạn luôn có thể bật dòng bọc ... với số dòng hiển thị trên mỗi dòng, nó thực sự không quá xấu. +1 – rmeador

6

Bối cảnh quyết định cái nào bạn chọn. Cuối cùng bạn đang viết mã để được đọc bởi một con người. Nếu thụt lề một khối mã khác nhau sẽ làm cho nó dễ đọc hơn sau đó làm điều đó.

4

Số cửa 3. Nếu bạn không thể làm điều đó trên một dòng, hãy thực hiện nó trên một dòng cho mỗi mục, bất cứ thứ gì khác làm xáo trộn các mục sau hàng đầu tiên trên đường dây và thật kinh khủng để đọc. Các vấn đề thụt đầu dòng nhất quán cũng vậy.

Fwiw, tôi nghĩ rằng đây là chiếc mũ cũ trong một ngày và tuổi mà hầu hết các lập trình viên nên có màn hình kép ở độ phân giải cao. Ví dụ đầu tiên trông giống như nó có thể là một dòng khá hạnh phúc.

+0

Ngoài câu hỏi về tiêu chuẩn, độ phân giải cao không thay đổi bản chất của việc đọc. Khi các dòng trở nên quá dài, chúng khó đọc. Tôi có thể phù hợp hơn hai lần những gì tôi cảm thấy thoải mái khi đọc trên bề rộng màn hình của tôi. Sử dụng toàn bộ chiều rộng sẽ chỉ làm chậm tôi xuống. – PartialOrder

1

Điều này thực sự khá chủ quan, giống như vị trí của dấu ngoặc và các kiểu mã hóa khác.Điều chính không phải là quá nhiều kiểu mà bạn chọn, nhưng bạn chọn phong cách và bạn gắn bó với nó trong suốt dự án.

Đối với cá nhân tôi, đến từ một nền Python, tôi sử dụng một đường dài của 79 và một phong cách

$flavors = array ('chocolate', 'strawberry', 'vanilla', 'cookie dough', 
        'chocolate chip', 'mint chocolate chip', 'rocky road', 
        'peach', 'fudge brownie', 'coffee', 'mocha chip'); 

.

Nhưng như tôi nói, theo ý kiến ​​của tôi, điều quan trọng hơn là phải có một phong cách, chứ không phải lo lắng về cái nào.

1

Trong văn xuôi, các dòng dài hơn 80 hoặc lâu hơn đã được chứng minh là khó đọc hơn. (Xem trang 13 của LaTeX Memoir lớp documentation.) Code Complete (phần 18.5, trang 425 của phiên bản của tôi) của cũng tham chiếu giới hạn 80 ký tự với điều kiện này:

Với màn hình lớn hơn, kiểu chữ hẹp, laser máy in và chế độ ngang, các đối số cho giới hạn 80 ký tự không hấp dẫn như chúng đã sử dụng với tôi. Một dòng dài 90 ký tự thường có thể đọc được nhiều hơn so với một dòng được chia thành hai chỉ để tránh tràn qua cột 80. Với công nghệ hiện đại, đôi khi nó có thể vượt quá 80 cột.

tôi sẽ thụt SQL trong ví dụ đầu tiên của bạn tách biệt với phần còn lại của các mã:

if ($Stmt = $Mysqli->prepare(
      "SELECT color, pattern, size, 
        manufacturer, mfgSku, storeLocation, 
        aisle, status 
      FROM tblItems 
      WHERE ourSku = ?")) { 

Ví dụ thứ hai có thể là tốt hơn nếu nó được nạp vào một tập tin cấu hình hoặc bàn.

Thứ ba là tốt, nhưng bạn có thể thắt chặt nó lên một chút với:

$Stmt->bind_result( 
    $this->_firstName, 
    $this->_lastName, 
    $this->_BillToAddress->address1, 
    $this->_BillToAddress->address2, 
    $this->_BillToAddress->city, 
    $this->_BillToAddress->state, 
    $this->_BillToAddress->zip, 
    $this->_BillToAddress->country, 
    $this->_email, 
    $this->_status, 
    $this->_primaryPhone, 
    $this->_mobilePhone 
); 
+0

'Trong văn xuôi, các dòng dài hơn 80 hoặc hơn đã được chứng minh là khó đọc hơn - trích dẫn? Thể hiện bởi ai? – Benubird

+0

@Benubird: Tôi đã cập nhật câu trả lời với nguồn chính của mình. Tôi đã thấy nghiên cứu này đề cập đến những nơi khác (và đọc các bài báo mô tả nghiên cứu), nhưng tôi không nhớ chúng có thể được tìm thấy ở đâu trên đỉnh đầu của tôi. –

0

Tôi không quan tâm lựa chọn 3 quá nhiều (1 mục trên mỗi dòng). Ngoài ra, cá nhân, tôi luôn luôn sử dụng wordwrapping, do đó, có mã trên một dòng không làm phiền tôi cả. Tuy nhiên, trong ví dụ thứ hai của bạn, với wordwrapping trên, mà có thể trông giống như một mớ hỗn độn cho các lập trình viên sử dụng wordwrapping. Có lẽ tôi thuộc một nhóm nhỏ hơn, những người không quan tâm đến những lời thoại dài.

0

Các thực hành tốt nhất thường xuất phát từ mục đích đằng sau những hạn chế dòng dài thân:

  • Tăng khả năng tương tác (giữa các lập trình viên, chỉnh sửa phần mềm, vv)
  • Để tăng khả năng đọc và hiểu
  • Để tăng sự hưởng thụ và tốc độ phát triển
  • Để tăng doanh thu và lợi nhuận

Vì vậy, các lựa chọn của bạn, chẳng hạn như sắp xếp tất cả các tham số stmt, là tốt nếu chúng đóng góp cả cho hiểu tương lai của bạn và của những người khác trong nhóm của bạn.

Hy vọng điều này sẽ giúp;) -M

11

Sở thích cá nhân của tôi là như sau;

 
$Stmt->bind_result(
    $this->_firstName, 
    $this->_lastName, 
    $this->_BillToAddress->address1, 
    $this->_BillToAddress->address2, 
    $this->_BillToAddress->city, 
    $this->_BillToAddress->state, 
    $this->_BillToAddress->zip, 
    $this->_BillToAddress->country, 
    $this->_email, 
    $this->_status, 
    $this->_primaryPhone, 
    $this->_mobilePhone 
); 

Bằng cách đó, dấu đóng và dấu chấm phẩy là cùng một thụt lề như lệnh gọi mở. Không phải tất cả các ngôn ngữ đều hỗ trợ các tham số trên một dòng khác để gọi phương thức ...

+1

+1 bởi vì tôi thích phương pháp này cũng như –

+0

Điều này có vẻ sạch sẽ và tuân theo tiêu chuẩn PSR-2. –

1

Nếu bạn đang gói nhiều hơn hai mục, tôi thích một dòng mới cho mỗi mục như trong ví dụ thứ ba của bạn. Các công cụ kiểm soát nguồn tự động dễ dàng hơn để hợp nhất các chỉnh sửa từ những người khác nếu chỉ có một mục trên mỗi dòng.

5

Một phong cách thụt lề bất thường mà tôi thấy mình nới lỏng khi thực hiện rất nhiều công việc SQL;

INSERT INTO someTable 
(
    id, 
    name, 
    age, 
    address1, 
    address2, 
) 
VALUES 
(
    2, 
    'Bob' 
    25, 
    '12 Fake Street', 
    'The Moon' 
) 

Tôi thực sự thấy dễ đọc hơn bất kỳ bố cục nào khác cho danh sách tham số dài.

+0

Tôi đã làm điều này mặc dù nó không thực sự sửa cú pháp chèn SQL khủng khiếp. Tại sao chúng ta không thể INSERT INTO someTable (id = 1, foo = 3, bar = 'gold') ?? –

+0

Tôi cũng làm như vậy. * Nhưng * Tôi cũng thấy phong cách này là khó khăn khi sử dụng sao chép và dán. –

+0

Nick: MySQL ít nhất hỗ trợ cú pháp như bảng INSERT INTO SET foo = "foo", bar = "bar", v.v. –

1

Làm theo tiêu chuẩn được mã xung quanh sử dụng. Không tạo của riêng bạn "tiêu chuẩn' dù có bao nhiêu 'tốt hơn'.

Các vấn đề liên quan