Tôi thích phiên bản không có niềng răng khi có thể.
Giải thích sau đây là dài dòng. Xin vui lòng chịu với tôi. Tôi sẽ đưa ra một lý do thuyết phục để tôi thích phong cách này. Tôi cũng sẽ giải thích lý do tại sao tôi nghĩ rằng các đối số thông thường không giữ được.
(Gần-) các dòng trống là một sự lãng phí
Lý do cho điều này là vì dấu ngoặc đóng yêu cầu thêm một dòng mã - và dấu ngoặc mở cũng vậy, tùy thuộc vào kiểu dáng. 1
Đây có phải là một vấn đề lớn? Bề ngoài, không. Rốt cuộc, hầu hết mọi người cũng đặt các dòng trống trong mã của họ để tách các khối độc lập một chút về mặt logic, giúp cải thiện đáng kể khả năng đọc.
Tuy nhiên, tôi ghét lãng phí không gian dọc. Màn hình hiện đại thực sự có không gian ngang rộng rãi. Nhưng không gian dọc vẫn còn rất, rất hạn chế (trừ khi bạn sử dụng màn hình được đặt thẳng đứng, điều này không phổ biến). Không gian dọc hạn chế này là một vấn đề: phải thừa nhận rộng rãi rằng các phương thức riêng lẻ phải càng ngắn càng tốt và các dấu ngoặc tương ứng (hoặc các dấu phân cách khối khác) không được chênh lệch chiều cao màn hình để bạn có thể nhìn thấy toàn bộ khối mà không có cuộn
Đây là một vấn đề cơ bản : một khi bạn không thể nhìn thấy toàn bộ khối trên màn hình của mình nữa, việc nắm bắt sẽ trở nên phức tạp.
Kết quả là, tôi ghét sự trống rỗng dư thừa. Trong đó các dòng trống đơn rất quan trọng để phân định các khối độc lập (chỉ cần nhìn vào hình thức trực quan của văn bản này), các dòng trống liên tiếp là một kiểu rất xấu trong cuốn sách của tôi (và theo kinh nghiệm của tôi, chúng thường là dấu hiệu của các lập trình viên mới làm quen).
Tương tự như vậy, các dòng chỉ đơn giản là giữ một cú đúp, và có thể được tiết kiệm, nên được. Một khối lệnh đơn được giới hạn bởi dấu ngoặc sẽ lãng phí một đến hai dòng. Chỉ với 50 dòng trên mỗi chiều cao màn hình, điều này là đáng chú ý.
Bỏ niềng răng có thể không có hại
Chỉ có một đối số chống lại việc bỏ dấu ngoặc: rằng sau này ai đó sẽ thêm một câu lệnh khác vào khối đang đề cập và sẽ quên thêm dấu ngoặc, do đó vô tình thay đổi ngữ nghĩa của mã.
Đây thực sự sẽ là một vấn đề lớn.
Nhưng theo kinh nghiệm của tôi thì không. Tôi là một lập trình viên cẩu thả; Tuy nhiên, trong thập kỷ kinh nghiệm lập trình của mình, tôi có thể thành thật nói rằng tôi đã không bao giờ quên thêm niềng răng khi thêm một tuyên bố bổ sung vào một khối đơn.
Tôi thậm chí còn thấy rằng đây là một lỗi phổ biến: các khối là một phần cơ bản của lập trình. Độ phân giải cấp độ khối và phạm vi là một quá trình tinh thần tự động, ăn sâu cho các lập trình viên. Bộ não chỉ làm điều đó (nếu không, lý luận về lập trình sẽ khó hơn nhiều). Không có nỗ lực tinh thần bổ sung cần thiết để nhớ đặt niềng răng: lập trình viên cũng nhớ để thụt vào câu lệnh vừa được thêm một cách chính xác, sau khi tất cả; Vì vậy, các lập trình viên đã xử lý tinh thần rằng một khối có liên quan.
Bây giờ, tôi không nói rằng bỏ sót niềng răng không gây ra sai lầm. Điều tôi đang nói là chúng ta không có bằng chứng theo cách này hay cách khác. Chúng tôi chỉ đơn giản là không biết liệu nó có gây hại hay không.
Vì vậy, cho đến khi ai đó có thể chỉ cho tôi dữ liệu cứng, được thu thập từ các thí nghiệm khoa học, chứng minh rằng đây thực sự là một vấn đề trong thực tế, lý thuyết này vẫn là một câu chuyện chỉ đơn giản như vậy : một giả thuyết rất hấp dẫn chưa bao giờ được đưa vào thử nghiệm, và rằng phải không được sử dụng như một cuộc tranh cãi.
1 Vấn đề này đôi khi được giải quyết bằng cách đặt mọi thứ - bao gồm cả niềng răng - trên cùng một dòng:
if (condition)
{ do_something(); }
Tuy nhiên, tôi tin rằng thật an toàn khi nói rằng hầu hết mọi người đều coi thường điều này. Hơn nữa, nó sẽ có cùng các vấn đề như biến thể không có niềng răng, vì vậy nó là điều tồi tệ nhất của cả hai thế giới.