ReSharper - зусилля фігурних дужок навколо однієї лінії


100

Чи можу я налаштувати ReSharper на виправлення коду C #, коли фігурні дужки не використовуються для оточення однорядного кодового блоку, як це:

if (blnSomeCondition)
   DoSomething();  // complain

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

Дякую


3
Добре запитання, але що не так з першим синтаксисом? Підвісні брекети непотрібні.
Міка

43
Деякі розробники стверджують, що доцільніше включати фігурні дужки навколо однорядного кодового блоку, оскільки він може бути більш читабельним та більш ретельним.
Райан Бергер

33
Крім того, я бачив, скільки разів не використання керлінг-брекетів призводило до помилок. Хтось вносить зміни, бачить "if" і додає новий рядок, не розуміючи, що він не буде виконаний як частина умовного. Це тонко, але трапилося.
Хаді Харірі

2
У мене насправді немає проблеми з першим форматом, але я бачу, що це може призвести до помилок у сценарії, про який згадував Хаді. Наша команда вирішила, що це стандарт кодування, який ми хочемо застосувати, саме тому я задаю це питання.
Booberry

5
Моє особисте вподобання - не використовувати дужки для одного рядка "if's", а розмістити "if" та наступне твердження на тій же фізичній лінії, наприклад "if (blnSomeCondition) Do Something ();".
Пол Руан

Відповіді:


148

У новій версії ReSharper (2016.x) переміщено до стилю коду. ReSharper 2016.1.1

UPD1: для ReSharper 2017.x ReSharper 2017.1.2

UPD2: для ReSharper 2018.x ReSharper 2018.1

UPD3: для ReSharper 2019.x ReSharper 2019.1

UPD4: для ReSharper 2020.x введіть тут опис зображення


35

Райан правильний (проте зауважте, що його посилання стосується довідки R # 2.0). Конкретна процедура така:

  1. Перейдіть до ReSharper> Опції> Мови> C #> Стиль форматування> Макет дужок
  2. Встановіть "Braces в" if-else "у викладі" на "Використовувати дужки для багаторядкових"
  3. Після збереження змін виберіть область для переформатування (це може бути вибір коду, файл, папка, проект, рішення - все, що завгодно).
  4. Виберіть ReSharper> Інструменти> Код очищення.
  5. Прибуток.

Пам’ятайте, що очищення коду виконує численні речі, і вони пов'язані не лише з форматуванням коду (детальніше див. На http://www.jetbrains.com/resharper/webhelp/Code_Cleanup__Index.html ), тому використовуйте цю функцію з розумом.


28

Рішення Gorohoroh близьке, але замість вибору "Використовувати дужки для багаторядкових" мені довелося вибрати "Додати дужки", щоб змусити його додавати дужки в однорядковому сценарії. І мені довелося встановити, що у всіх шести спадах, що випадають під "Силою брекетів", щоб спіймати всі сценарії:

alt текст

Я дуже сподівався на те, щоб я міг настроїти ReSharper робити жовте попередження або червону помилку, коли правило було порушено, але я не знайшов способу це зробити. Оскільки ви маєте рацію, Горохорох, Код очищення робить багато речей, і я хотів би мати можливість переглядати та виправляти порушення правил один за одним.

Спасибі за вашу допомогу!


8

Для ReSharper 2016.2.2 .

Ви повинні відредагувати свій профіль для прибирання. Власний елемент називається Додати / Вилучити дужки для окремих висловлювань у "if-else", "for", "foreach", "while", "do-while", "using" . Цей елемент можна знайти в елементі C # => Стилі коду .

Якщо пункт позначено, дужки будуть додані; якщо це не встановлено, брекети будуть видалені.

Примітка: додавання зараз не працює (не знаю, чому - можливо, занадто свіжа версія ReSharper). Однак якщо ви знімете позначку згаданого елемента, існуючі дужки навколо окремих операторів не будуть видалені.

UPD: Проблема вирішена, дивіться перші два коментарі під цим повідомленням.


2
Це працює у 2016.3.2 дещо інакше - у розділі Опції перейдіть до редагування коду -> C # -> стилі коду -> дужки -> у виписі "Якщо" , а потім виберіть "Насилити завжди" у розділі Налаштування. Інші параметри: "Не застосовувати", "Застосовувати, якщо тіло багаторядкове", "Застосовувати, якщо заява є багаторядковою" тощо.
Чай

Приємно. Дякую! І після цих налаштувань описане мною очищення працює належним чином.
Йорданія


1

Просто якщо це може допомогти комусь іншому заощадити час, на одній машині моєї компанії, слідування порадам Сергія було недостатньо, незважаючи на чудову якість його посади.

Що стосується налаштування (VS2017, R # 2019, обидва до цього часу), ці налаштування на стороні R # вже були хорошими, але мені також довелося змінити їх у параметрах Visual Studio:

  • У вікні "Параметри" перейдіть до редактора тексту -> C # -> Стиль коду -> Форматування -> Загальне ,
  • Поставте прапорець " Виконати додаткове очищення коду під час форматування " та " Додати / видалити дужки для однорядкового оператора керування "

0

Ну, це знову переміщено. Нове місце знаходиться у стилі синтаксису у версії ReSharper 2020.01.

Йти до ReSharper > Options > Code Editing > C# > Syntax Style > Braces

Ось знімок екрана ReSharper 2020.01

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.