ReSharper - buộc các dấu ngoặc nhọn xung quanh dòng đơn


100

Tôi có thể định cấu hình ReSharper để sửa mã C # khi dấu ngoặc nhọn không được sử dụng để bao quanh khối mã một dòng không, như sau:

if (blnSomeCondition)
   DoSomething();  // complain

if (blnSomeOtherCondition)
{
   DoSomethingElse(); // don't complain
}

Cảm ơn


3
Câu hỏi hay, nhưng cú pháp đầu tiên có gì sai? Niềng răng cuộn tròn là không cần thiết.
Micah

43
Một số nhà phát triển cho rằng cách tốt hơn là nên bao gồm các dấu ngoặc nhọn xung quanh khối mã một dòng vì nó có thể dễ đọc hơn và dễ bảo trì hơn.
Ryan Berger

33
Ngoài ra, tôi đã thấy bao nhiêu lần không sử dụng nẹp uốn đã dẫn đến lỗi. Ai đó thực hiện một thay đổi, nhìn thấy if và thêm một dòng mới, không nhận ra rằng nó sẽ không thực thi như một phần của điều kiện. Nó tinh tế nhưng đã xảy ra.
Hadi Hariri

2
Tôi không thực sự có vấn đề với định dạng đầu tiên, nhưng tôi có thể thấy rằng nó có thể dẫn đến lỗi trong kịch bản mà Hadi đã đề cập. Nhóm của chúng tôi đã quyết định rằng đó là một tiêu chuẩn mã hóa mà chúng tôi muốn thực thi, đó là lý do tại sao tôi đặt câu hỏi.
Booberry

5
Sở thích cá nhân của tôi là không sử dụng dấu ngoặc nhọn cho dòng đơn 'if's, mà đặt' if 'và câu lệnh sau vào cùng một dòng vật lý, ví dụ:' if (blnSomeCondition) Do Something (); '.
Paul Ruane

Câu trả lời:


148

Trong phiên bản mới của ReSharper (2016.x) đã được chuyển sang Code Style. ReSharper 2016.1.1

UPD1: cho ReSharper 2017.x ReSharper 2017.1.2

UPD2: cho ReSharper 2018.x ReSharper 2018.1

UPD3: cho ReSharper 2019.x ReSharper 2019.1

UPD4: cho ReSharper 2020.x nhập mô tả hình ảnh ở đây


35

Ryan đúng (tuy nhiên lưu ý rằng liên kết của anh ấy đề cập đến trợ giúp R ​​# 2.0). Quy trình cụ thể như sau:

  1. Đi tới ReSharper> Tùy chọn> Ngôn ngữ> C #> Kiểu định dạng> Bố cục dấu ngoặc nhọn
  2. Đặt "Dấu ngoặc nhọn trong câu lệnh" if-else "" thành "Sử dụng dấu ngoặc nhọn cho nhiều dòng"
  3. Sau khi lưu các thay đổi, hãy chọn một phạm vi để định dạng lại (có thể là lựa chọn mã, tệp, thư mục, dự án, giải pháp - bất cứ thứ gì bạn muốn).
  4. Chọn ReSharper> Tools> Cleanup Code.
  5. Lợi nhuận.

Hãy nhớ rằng Code Cleanup thực hiện nhiều việc và chúng không chỉ liên quan đến định dạng mã (xem chi tiết tại http://www.jetbrains.com/resharper/webhelp/Code_Cleanup__Index.html ), vì vậy hãy sử dụng tính năng này một cách khôn ngoan.


28

Giải pháp của Gorohoroh là gần đúng, nhưng thay vì chọn "Sử dụng dấu ngoặc nhọn cho nhiều dòng", tôi phải chọn "Thêm dấu ngoặc nhọn" để buộc nó thêm dấu ngoặc nhọn trong kịch bản một dòng. Và tôi đã phải đặt điều đó trong tất cả sáu trình đơn thả xuống trong "Buộc lòng" để nắm bắt tất cả các tình huống:

văn bản thay thế

Điều tôi thực sự hy vọng là có thể thiết lập ReSharper để thực hiện cảnh báo màu vàng hoặc lỗi màu đỏ khi quy tắc bị vi phạm, nhưng tôi chưa tìm ra cách để làm điều đó. Bởi vì bạn nói đúng, Gorohoroh, Cleanup Code làm được rất nhiều thứ và tôi muốn có tùy chọn để xem xét và khắc phục từng vi phạm quy tắc một.

Cảm ơn bạn đã giúp đỡ!


8

Đối với ReSharper 2016.2.2 .

Bạn nên chỉnh sửa hồ sơ của mình để làm sạch. Mục thích hợp được gọi là Thêm / Xóa dấu ngoặc nhọn cho các câu lệnh đơn trong "if-else", "for", "foreach", "while", "do-while", "using" . Bạn có thể tìm thấy mục này trong mục C # => Code styles .

Nếu mục được chọn, dấu ngoặc nhọn sẽ được thêm vào; nếu không được kiểm tra, niềng răng sẽ bị loại bỏ.

Lưu ý: việc thêm hiện không hoạt động (không biết tại sao - có lẽ, phiên bản quá mới của ReSharper). Tuy nhiên, nếu bạn bỏ chọn mục đã đề cập, thì các dấu ngoặc nhọn xung quanh các câu lệnh đơn sẽ không bị xóa.

UPD: Vấn đề đã được giải quyết, hãy xem hai bình luận đầu tiên dưới bài đăng này.


2
Điều này hoạt động trong 2016.3.2 hơi khác một chút - trong Tùy chọn, đi tới Chỉnh sửa mã -> C # -> Kiểu mã -> Dấu ngoặc nhọn -> Trong câu lệnh "Nếu" , sau đó chọn "Thực thi luôn" trong Tùy chọn. Các tùy chọn khác là "Không thực thi", "Thực thi nếu nội dung là nhiều dòng", "Thực thi nếu câu lệnh là nhiều dòng", v.v.
Chait

Đẹp. Cảm ơn bạn! Và sau những cài đặt này, việc dọn dẹp được tôi mô tả hoạt động bình thường.
Jordan


1

Chỉ cần nó có thể giúp người khác tiết kiệm thời gian, trên một máy của công ty tôi, làm theo lời khuyên của Sergey là không đủ mặc dù chất lượng tuyệt vời của bài đăng của anh ấy.

Trên thiết lập liên quan (VS2017, R # 2019, cả hai đều được cập nhật), các cài đặt này ở phía R # đã tốt, nhưng tôi cũng phải sửa đổi nó trong tùy chọn Visual Studio:

  • Trong cửa sổ Tùy chọn, đi tới Trình soạn thảo văn bản -> C # -> Kiểu mã -> Định dạng -> Chung ,
  • Chọn " Thực hiện dọn dẹp mã bổ sung trong khi định dạng " và " Thêm / xóa dấu ngoặc nhọn cho câu lệnh điều khiển một dòng "

0

Vâng, nó lại được di chuyển. Vị trí mới là theo Kiểu cú pháp trên phiên bản ReSharper 2020.01.

Đi đến ReSharper > Options > Code Editing > C# > Syntax Style > Braces

Đây là ảnh chụp màn hình từ ReSharper 2020.01

nhập mô tả hình ảnh ở đây

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.