ReSharper - küme ayraçlarını tek satır etrafında zorla


101

Küme parantezleri tek satırlı bir kod bloğunu çevrelemek için kullanılmadığında ReSharper'ı C # kodunu düzeltecek şekilde yapılandırabilir miyim, örneğin:

if (blnSomeCondition)
   DoSomething();  // complain

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

Teşekkürler


3
Güzel soru, ama ilk sözdiziminde yanlış olan ne? Kıvrım telleri gereksizdir.
Micah

43
Bazı geliştiriciler, tek satırlık bir kod bloğunun etrafına kaşlı ayraç eklemenin daha okunaklı ve daha sürdürülebilir olabileceğinden daha iyi bir uygulama olduğunu savunuyorlar.
Ryan Berger

33
Ek olarak, bukle teli kullanmamanın kaç kez hatalara yol açtığını gördüm. Birisi bir değişiklik yapar, if'i görür ve yeni bir satır ekler, koşulun bir parçası olarak çalışmayacağının farkına varmaz. İnce ama oldu.
Hadi Hariri

2
İlk formatla gerçekten bir problemim yok ama Hadi'nin bahsettiği senaryoda hatalara yol açabileceğini görebiliyorum. Ekibimiz, bunun uygulamak istediğimiz bir kodlama standardı olduğuna karar verdi, bu yüzden soruyu soruyorum.
Booberry

5
Kişisel tercihim, tek satırlık 'if'ler için parantez kullanmak değil,' if 've aşağıdaki ifadeyi aynı fiziksel satıra yerleştirmektir, örneğin' if (blnSomeCondition) Bir Şey Yap (); '.
Paul Ruane

Yanıtlar:


148

ReSharper'ın yeni versiyonunda (2016.x) Kod Stiline taşınmıştır. ReSharper 2016.1.1

UPD1: ReSharper 2017.x için ReSharper 2017.1.2

UPD2: ReSharper 2018.x için ReSharper 2018.1

UPD3: ReSharper 2019.x için ReSharper 2019.1

UPD4: ReSharper 2020.x için görüntü açıklamasını buraya girin


35

Ryan haklı (ancak bağlantısının R # 2.0 yardımına atıfta bulunduğuna dikkat edin). Spesifik prosedür aşağıdaki gibidir:

  1. ReSharper> Seçenekler> Diller> C #> Biçimlendirme Stili> Kaşlı Ayraç Düzeni'ne gidin
  2. "If-else" ifadesini "Çok satırlı için kaşlı ayraç kullan" olarak ayarlayın
  3. Değişiklikleri kaydettikten sonra, yeniden biçimlendirmek için bir kapsam seçin (kod seçimi, dosya, klasör, proje, çözüm - istediğiniz herhangi bir şey olabilir).
  4. ReSharper> Araçlar> Temizleme Kodu'nu seçin.
  5. Kar.

Kod Temizlemenin çok sayıda şey yaptığını ve bunların yalnızca kod biçimlendirmeyle ilgili olmadığını unutmayın (ayrıntılara http://www.jetbrains.com/resharper/webhelp/Code_Cleanup__Index.html adresinde bakın ), bu nedenle özelliği akıllıca kullanın.


28

Gorohoroh'un çözümü yakındır, ancak "Çok satırlı için parantez kullan" ı seçmek yerine, tek satırlık senaryoda parantez eklemeye zorlamak için "Parantez ekle" yi seçmem gerekti. Ve tüm senaryoları yakalamak için "Force Braces" altındaki altı açılır listenin hepsinde bunu ayarlamak zorunda kaldım:

alternatif metin

Gerçekten umduğum şey, kural ihlal edildiğinde ReSharper'ı sarı uyarı veya kırmızı hata yapacak şekilde ayarlayabilmekti, ancak bunu yapmanın bir yolunu bulamadım. Haklı olduğun için Gorohoroh, Temizleme Kodu çok şey yapar ve ben de kural ihlallerine teker teker bakma ve bunları düzeltme seçeneğine sahip olmak istiyorum.

Yardımınız için teşekkürler!


8

İçin ReSharper 2016/02/02 .

Profilinizi temizlemek için düzenlemelisiniz. Uygun öğe, "if-else", "for", "foreach", "while", "do-while", "using" içindeki tek ifadeler için ayraç Ekle / Kaldır olarak adlandırılır . Bu öğe C # => Kod stilleri öğesinin içinde bulunabilir.

Öğe işaretlenirse, kaşlı ayraçlar eklenecektir; işaretlenmezse kaşlı ayraçlar kaldırılacaktır.

Not: ekleme şu anda çalışmıyor (nedenini bilmiyorum - belki ReSharper'ın çok yeni sürümü). Bununla birlikte, bahsedilen öğenin işaretini kaldırırsanız, tek ifadelerin etrafındaki mevcut parantezler kaldırılmayacaktır.

UPD: Sorun çözüldü, bu yazının altındaki ilk iki yoruma bakın.


2
Bu, 2016.3.2'de biraz farklı çalışır - Seçenekler altında, Kod Düzenleme -> C # -> Kod stilleri -> Parantezler -> "If" ifadesine gidin ve ardından Tercih altında "Her zaman uygula" seçeneğini seçin. Diğer seçenekler "Zorlama", "Gövde çok satırlıysa uygula", "İfade çok satırlıysa uygula" vb.
Chait

Güzel. Teşekkür ederim! Ve bu ayarlardan sonra, benim tarafımdan açıklanan temizlik düzgün çalışıyor.
Ürdün


1

Sırf bir başkasının şirketimin bir makinesinde zamandan tasarruf etmesine yardımcı olacaksa, görevinin yüksek kalitesine rağmen Sergey tavsiyelerini takip etmek yeterli değildi.

İlgili kurulumda (VS2017, R # 2019, her ikisi de güncel) R # tarafındaki bu ayarlar zaten iyiydi, ancak bunu Visual Studio seçeneklerinde de değiştirmek zorunda kaldım:

  • Seçenekler penceresinde, Metin düzenleyici -> C # -> Kod stili -> Biçimlendirme -> Genel'e gidin ,
  • " Biçimlendirme sırasında Ek kod temizleme gerçekleştir " ve " Tek satırlık kontrol ifadesi için kaşlı ayraç ekle / kaldır " seçeneğini işaretleyin.

0

Yine taşınır. Yeni yer, sürümde Sözdizimi Stili altındadır ReSharper 2020.01.

Git ReSharper > Options > Code Editing > C# > Syntax Style > Braces

İşte ekran görüntüsü ReSharper 2020.01

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.