Có phải cuộn theo chiều ngang làm cho mã ít đọc hơn?


12

Vâng, phải không? Có được coi là thực hành xấu?

IMO, nó ít đọc hơn. Tôi ghét phải di chuyển sang phải, sau đó quay lại trái, phải, trái, và như vậy. Nó làm cho mã hóa đau đớn hơn và đôi khi làm tôi bối rối.

Ví dụ, bất cứ khi nào tôi mã hóa một chuỗi dài, tôi sẽ làm như sau ...

bigLongSqlStatement = "select * from sometable st inner join anothertable at" +
"on st.id = at.id" +
"and so on..." +
"and so on..." +
"and so on..."

15
vâng, nó làm (và đừng quên thụt dòng bị đổ)
Javier

2
Tôi sẽ nói rằng nó làm. Từ những gì tôi đã thấy, có vẻ như đó là cách thực hành khá chuẩn giữa các lập trình viên kinh nghiệm để loại bỏ cuộn ngang theo cách bạn đã vạch ra. Ở một mức độ nào đó mặc dù có một chút ưu tiên cá nhân về vấn đề này ...
Kenneth

1
Tôi có thể điều hướng mã theo chiều dọc và trong các dòng ở tốc độ cao bằng một vài phím, cuộn theo chiều ngang rất khó chịu khi so sánh.

Các cột trên toàn làm cho bất cứ điều gì ít đọc hơn. Điều đó đã được xác định nhiều lần.
David Thornley

2
Tôi đồng ý. Vấn đề duy nhất là khiến mọi người đồng ý về mức độ rộng rãi để làm cho trình soạn thảo của bạn. Trên mã rộng thêm tôi thường chỉ đặt bọc nếu tôi có một tấn của nó để đọc qua.
Karl Bielefeldt

Câu trả lời:


19

Vâng, thực sự nó làm, theo nghĩa đen cũng như ý nghĩa chung.

Tôi thích làm khác biệt mã bên cạnh, và các dòng quá rộng làm cho điều đó khó hơn:

http://i.stack.imgur.com/fWVuz.jpg

Các ngôn ngữ như Scala với chuỗi ba trích dẫn cho phép bạn xây dựng một chuỗi từ nhiều dòng mà không phải trả chi phí thời gian chạy, trích dẫn khó coi và dấu cộng (như trong ví dụ của bạn) về việc nối các phần của chuỗi.


11

Có, tôi nghĩ 80 ký tự trên mỗi dòng là hợp lý và thường được sử dụng.


6

Đó là một câu hỏi thực sự quan trọng với tôi! Tôi đã làm việc 7 tháng trên máy tính xách tay 13 "với các đồng nghiệp có màn hình máy tính để bàn 24" và tôi thấy mình đã dành nhiều thời gian để rút ngắn thời gian để kết thúc với thứ gì đó có thể đọc được.

80 cột hơi nhỏ trong nhiều trường hợp (trừ khi bạn đang làm việc trên một thiết bị đầu cuối với vi tùy chọn duy nhất;)), nhưng hơn ~ 150 là quá nhiều (xem bên dưới).

Đó là câu hỏi 'dễ đọc' thuần túy.

Bây giờ, đối với phần 'thực hành tốt', tôi rất thường thấy các dòng dài như vậy là thiếu sót, tức là có một phần nên được trích xuất trong một biến tạm thời, hoặc được sao chép, ví dụ (ObjectiveC, đoạn trích phổ biến trong lập trình iPhone) :

CGPoint point = CGPointMake(someOtherView.frame.origin.x + someOtherView.frame.size.width, someOtherView.frame.origin.x + someOtherView.frame.size.height);

Xin lưu ý rằng điều này có thể trở nên thậm chí còn khó khăn hơn khi làm việc với các vectơ 3 chiều hoặc ma trận.

Ví dụ viết lại:

CGRect frame = someOtherView.frame;
CGPoint origin = frame.origin;
CGSize size = frame.size;
CGPoint point = CGPointMake(origin.x + size.width, origin.x + size.height);

Điều này hiện đang phù hợp trên một màn hình nhỏ hơn, dễ dàng gỡ lỗi hơn bằng cách sử dụng IDE hoặc một số ghi vào đầu ra tiêu chuẩn và thậm chí có thể nhanh hơn, tùy thuộc vào chi phí của yêu cầu phương thức / thuộc tính. Tất nhiên đây là một chút gượng ép, hầu hết các ví dụ trong thế giới thực phức tạp hơn nhiều ...


4

Không phải lúc nào.

Chỉ cần thêm một chế độ xem khác, khi tôi đọc mã, tôi thường có thể nhận được ý chính về dòng mã đang làm mà không phải đọc toàn bộ dòng. Nếu tôi có thể đọc tên phương thức nhưng các tham số phương thức tràn ra khỏi màn hình, thông thường tôi không bị làm phiền vì tôi chỉ có thể nói từ tên phương thức đó là ý định của dòng mã đó là gì. Nếu một vài dòng mã tràn ra khỏi màn hình thì tôi nghĩ việc đánh đổi việc thỉnh thoảng (từ quan trọng ở đó) cuộn theo chiều ngang là đáng giá cho mã nhỏ gọn hơn. Đôi khi tôi thấy mã đơn dòng nhiều dòng gây mất tập trung khi tôi phải ghép lại một cách tinh thần mã nào đi với câu lệnh nào.

Thông thường, các dòng mã tràn theo chiều ngang có các bit quan trọng của chúng ở bên trái (hiển thị) và các bit ít quan trọng hơn ở bên phải (ngoài màn hình), do đó, đối với tôi, điều này giúp tăng cường khả năng đọc khi tôi có thể quét mã xuống các bit quan trọng trên mỗi dòng trái ngược với cách thay thế là có các bit mã ít quan trọng hơn từ một dòng quá dài chiếm không gian bên trái quan trọng trực quan trên (các) dòng sau.

Đã nói tất cả những điều đó, tôi chắc chắn sẽ không muốn cuộn theo chiều ngang rất thường xuyên, nhưng tôi thấy vấn đề này ít xảy ra hơn trong những ngày theo dõi màn hình rộng này.


2
Tôi không biết rằng một số bit chương trình quan trọng hơn các bit khác. Tôi sẽ cố gắng cải thiện năng suất của mình theo cách đó: chỉ mã hóa các bit quan trọng.
mouviciel

1
@mouviciel, Không phải bên trái của mã quan trọng hơn, mà về mặt ngữ nghĩa, bên trái của mã có ý nghĩa quan trọng hơn trong việc hiểu dòng mã làm gì hơn bên phải. Khi bạn quét mã, bạn thường chỉ đọc phần đầu của dòng để hiểu những gì nó làm trước khi chuyển sang phần tiếp theo.
Chris Knight

1
Đối với tôi, các đối số được truyền cho một phương thức có nhiều ý nghĩa như tên phương thức. Để lại thông tin đó dẫn đến đoán những gì mã làm nhiều hơn là hiểu nó.
mouviciel

1

Vâng, nó làm.

Ngẫu nhiên là một mẹo. Nếu bạn đang sử dụng một ngôn ngữ có chuỗi nhiều dòng (hầu như tất cả các ngôn ngữ tập lệnh đều có chúng) và bao gồm cả SQL dài, thì việc đặt SQL vào một chuỗi nhiều dòng có thể sử dụng các quy tắc định dạng nhất quán cho SQL. Xem http://bentilly.blogspot.com/2011/02/sql-formatted-style.html để biết phong cách định dạng mà tôi sử dụng.


1

Không, nó không.

Tôi có một biên tập viên. Nó không chỉ có đường bao bọc, nó còn thụt dòng bọc , mà (nếu màn hình nói rộng 100 ký tự) sẽ gây ra

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

xuất hiện như

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut 
    labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 
    laboris nisi ut aliquip ex ea commodo consequat.

hoặc với bất kỳ mức độ thụt đầu dòng nào được đặt làm mặc định cho ngôn ngữ hiện tại.

Các dòng rộng hơn màn hình của tôi không bao giờ làm cho mã ít dễ đọc hơn so với mã được thụt dòng theo cách thủ công.

chỉnh sửa: ooooh, tôi biết câu trả lời này sẽ không phổ biến :)


2
Tốt cho bạn. Nhưng bạn sẽ làm gì nếu phải chuyển sang một trình chỉnh sửa không có tính năng này?

1
@dunsmoreb: Tại sao bạn lại chuyển sang một trình soạn thảo lỗi thời đến nỗi nó không hỗ trợ ngay cả từ bao (trừ khi bạn làm việc với mã nguồn được viết ba mươi năm trước và làm việc trên nền tảng kế thừa mà bạn không có lựa chọn chính xác biên tập viên)?
Arseni Mourzenko

MainMa, tôi đang đề cập đến tính năng thụt dòng bọc của bạn.

@dunsmoreb: công bằng mà nói, thậm chí chỉ cần bọc từ là đủ tốt nếu hàng dài không phổ biến
amara

7
Chỉ vì trình soạn thảo của bạn có thể ngắt một dòng, không có nghĩa là nó sẽ bọc nó ở vị trí hợp lý nhất để dễ đọc.
Craige

0

Chắc chắn là có. Có một lý do báo và tạp chí sử dụng cột. Khả năng đọc là một yếu tố quan trọng. Khi đọc mắt chúng ta quét xuống với chuyển động tương đối ít. Hiệu quả là cho phép mắt chúng ta quét những gì chúng ta đang đọc một cách nhanh chóng.

Ngay cả khi nhìn thấy trên các cột rộng màn hình buộc mắt chúng ta phải quét qua lại nhanh chóng. Trong khi quét lại, chúng tôi không thực sự hiểu bất cứ điều gì. Điều này sẽ làm chậm đáng kể việc đọc và hiểu. Hiệu quả tương tự như máy in cơ cũ. Những điều này thường yêu cầu một số ký tự null được chèn sau khi quay trở lại vận chuyển để cho phép thời gian vận chuyển hoặc đầu in để định vị lại cho dòng tiếp theo.

Ngoài ra, bố cục dọc thường được thực hiện theo cách để làm rõ việc nhóm các nội dung trên dòng. Điều này thường chỉ nên áp dụng cho các điều kiện logic ghép. Các công thức dài có thể được cấu trúc tốt hơn như một chuỗi các câu lệnh. (Trình tối ưu hóa sẽ khắc phục mọi chi phí phụ và một số trình tối ưu hóa sẽ từ bỏ hoặc hoạt động kém trên các công thức phức tạp.)

Các định danh có nhiều dấu chấm yêu cầu các dòng lớn biểu thị các kỹ thuật mã hóa cần được chỉnh sửa.


0

Bánh xe giúp dễ dàng di chuyển nhanh theo chiều dọc ... cuộn theo chiều ngang là quá đắt so với.


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.