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.