Đóng ngoặc đơn trên dòng riêng không được chấp nhận? [đóng cửa]


8

Tôi đã sử dụng Emacs trong một số năm nay, nhưng tôi mới chỉ vấp phải các tiêu chuẩn mã hóa . Có ghi:

Đừng tạo thói quen đặt dấu ngoặc đơn gần đúng; Lập trình viên Lisp thấy điều này gây bối rối.

Đây chính xác là thói quen tôi đã xây dựng, vì tôi thấy mã dễ đọc hơn. Tôi thấy các phong cách hỗn hợp trong các gói được phân phối với Emacs. Câu hỏi của tôi là nếu disconcert này là phổ biến cho hầu hết các lập trình viên elisp.

Chỉnh sửa: Nhìn vào mã của tôi, tôi không tuân thủ nghiêm ngặt điều này. Sau đó, mã sẽ khá kinh khủng. Nó chủ yếu là defun, hãy, nếu và vv. Nhưng, nó dường như chống lại hạt gạo, vì vậy tôi có lẽ nên ngừng làm điều này. Chúc mừng cho đầu vào.

.


4
Không thể chấp nhận được, chỉ thực sự gây phiền nhiễu :)
abo-abo

4
Hãy nghĩ về nó giống như một ngôn ngữ khoảng trắng, ngoại trừ dấu ngoặc loại bỏ sự mơ hồ có thể có - trong lisp được định dạng tốt, bạn sẽ có thể đọc nó mà không cần nhìn vào dấu ngoặc
Squidly

1
Tôi tò mò không biết gói nào được giao với emacs không tuân thủ điều này.
Malabarba

3
@Malabarba Một tìm kiếm với agcác nguồn không thể thiếu cho tôi 3414 ứng cử viên cho ^\s*?\)$regex tạo ra 468 tệp thuộc khoảng 200 gói?
wasamasa

1
@wasamasa Ý kiến ​​hay. Tôi đặt nó thông qua một vài ống dẫn và nhận được rằng 90% các .eltệp có ít hơn 10 trường hợp này. Có nghĩa là các tệp này không chấp nhận nó như một kiểu, họ chỉ sử dụng nó ở một số vị trí thuận tiện (muốn hoàn thành các chức năng thực sự dài).
Malabarba

Câu trả lời:


6

Vâng một câu trả lời ngắn gọn là "không có nhu cầu". Vì Emacs có thể phân tích các biểu thức s của LISP, nó biết chính xác nơi các biểu mẫu cân bằng và có thể thụt lại mã chính xác. Trong trường hợp này, việc di chuyển một dấu ngoặc xuống dòng riêng của nó chỉ đơn giản là lãng phí thêm một dòng không gian và đồng thời là không bình thường và chói tai đối với các lập trình viên LISP khác, những người đã quen với phong cách kinh điển. Như đã được đề cập trong các bình luận, điều này không ngăn cản bạn sử dụng khoảng trắng dọc để tách các đoạn mã trực quan.

Trong thực tế, rất nhiều Emacs sử dụng các lập trình viên LISP sử dụng nhiều tín hiệu hình ảnh bổ sung khác như chế độ show-paren giúp điều hướng qua một tổ hợp dày đặc của dấu ngoặc đơn đóng. Các kỹ sư đã đưa các mô-đun như pareditparens thông minh vào chu trình chỉnh sửa của họ đã trở thành một với AST và chỉ đơn giản là thao tác trực tiếp cấu trúc của nó theo cách các biểu thức luôn được cân bằng và hoàn chỉnh.


Tất nhiên tôi có khớp ngoặc đơn và vân vân, nhưng tôi nghĩ không gian dọc có một vị trí trong tất cả các mã, và đó là những gì thói quen không được đề xuất này mang lại. Nhưng một phong cách chung luôn tốt, đối với bất kỳ điều gì công khai tôi sẽ sử dụng cách được đề xuất. Nhưng để biến nó, khối lượng của dấu ngoặc đơn ở cuối mang lại giá trị gì :).
Tên người dùng có ý nghĩa

4
Bạn luôn có thể thêm không gian dọc; không có gì nói bạn phải smoosh mỗi dòng cho đến tiếp theo. Đôi khi không gian dọc là hữu ích; đôi khi không. Đặt dấu ngoặc đơn ở cuối dòng cho phép bạn chọn khi nào cần thêm không gian dọc và khi nào không. Parens trên một dòng mới buộc không gian dọc, và rất nhiều trong số đó.
zck

@zck: Tôi đã cập nhật câu trả lời để đề cập đến quan điểm của bạn. Cảm ơn.
stsquad

Điểm tốt. Tôi đã bắt đầu thay đổi mã của mình để phù hợp với tiêu chuẩn. Không có nhiều khác biệt, vì vậy nên nhanh chóng làm quen. Đoán tôi chỉ cảm thấy các dấu ngoặc đơn nên được sử dụng cho một cái gì đó, trong khi hầu hết những người khác dường như bỏ qua khá nhiều.
Tên người dùng có ý nghĩa

6

Hướng dẫn phong cách Lisp của Riastradh xây dựng thêm một chút về chủ đề cụ thể này. Mặc dù anh ấy thường không khuyến khích đặt dấu ngoặc đơn trên dòng riêng của mình, anh ấy nhận ra một số trường hợp ngoại lệ, chẳng hạn như một dòng trước với một paren đóng được nhận xét và các danh sách thực sự dài sẽ liên tục gây rối khi thêm các yếu tố mới vào đầu hoặc cuối .


1

Tôi đã viết Elisp khoảng 2-3 năm nay. Lúc đầu, tôi đang thực hiện công việc treo đồ, nhưng vì tôi đã phát hiện ra quy tắc mà bạn đề cập, tôi đã bắt đầu tự làm. Và tôi có thể nói rằng việc đọc mã dễ dàng hơn nhiều khi nó được tạo kiểu đúng.

Tôi thậm chí đã viết một số mã chỉnh sửa LISP ở đây: lispy-tab .

Và, tất nhiên, tôi có show-paren-modetất cả thời gian.

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.