Visual Studio C # deyimi daraltma


180

Gerçekten uzun kod bloklarını düzenlerken (bu kesinlikle yine de yeniden düzenlenmesi gerekir, ancak bu sorunun kapsamı dışındadır), genellikle bir tanesi fonksiyon bloklarını daraltabilir gibi ifade bloklarını daraltabilme yeteneğini isterim. Yani, parantez içine alınmış her şey için kod anahatlarında eksi simgesi belirirse harika olurdu. Fonksiyonlar, sınıflar, bölgeler, ad alanları, kullanımlar için görünür, ancak koşullu veya yinelemeli bloklar için görünmez. İfs, switchler, foreaches, bu tür şeyler gibi şeyleri çökertebilirsem harika olurdu!

Biraz googling, görünüşe göre VS C + anahat bu izin verir ama VS # C anahat özetlemiyor. Nedenini anlamıyorum. Notepad ++ bile C # biçimlendirmesini seçerseniz bu çöker böylece Visual Studio neden alamadım.

Herkes bu davranışı etkinleştirecek bir VS2008 eklentisi biliyor mu? Ya da bir çeşit gizli ayar?

Eklemek için düzenlendi: bölgeleri eklemek elbette bir seçenektir ve benim için zaten gerçekleşti, ancak açıkçası, parantez içine alınmış bir bölgeye sarmak zorunda kalmamalıyım ... mevcut kod, ben sadece yine de endişe daha iyi ayrılması için refactor olur. (bölgeler yerine yeni yöntemlerle "sarma";)


6
BTW: Bu iki kısayolun hayatımı çok kolaylaştırdığını buldum: Anahat değiştir: Ctrl + M, M Tümünü Daralt: Ctrl + M, O
Gaurav

2
Ctrl + M, L yinelemeli bir daraltma / genişletme arasında geçiş yapar. Tabii ki, bu sizi tek bir satırla bırakabilir. Bununla birlikte, bu satırın içinde (Ctrl + M, M) size güzel bir özetlenmiş dosya bırakır.
patridge

2
İşte VS 2012 için eşdeğer bir eklenti: stackoverflow.com/questions/18388280/…
Glimpse

ilgili: Jeff Atwood'un Kod Katlama Sorunu , 2008
Nick Alexeev

Yanıtlar:


267

Visual Studio 2017 ile başlayarak, ifade daraltma özelliği yerleşiktir.

VS 2010 sürümünden başlayarak VS'nin 2017 öncesi sürümleri için bu görevi gerçekleştiren birkaç uzantı vardır:

Son uzantı sadece VS 2015 ve VS 2017'yi destekliyor, ancak en güçlü olanı.
Daraltılmış blokların sözdizimi rengini destekler, daha fazla hataya dayanıklı ve optimize edilmiştir.

İndirmek için bir tarayıcı kullandıktan sonra uzantı yüklenmiyor gibi görünüyorsa, yerleşik Visual Studio uzantı yöneticisini kullanmayı deneyin.


Bu harika, uzun zamandır böyle bir şey arıyordum. Gerçek cevap olmalı! (Ama sadece VS2010 non-express edition kullanıyorsanız, sanırım ...)
rikoe

Bu uzantı harika ama işleyicileri üzerinde çalışmıyor (.ashx)
Jemsworld


3
Visual Studio için bu eklentiye bile ihtiyacımız var. Bu standart bir davranış olmalıdır. İyilik.
Ryan Rodemoyer

@Odys, Ctrl M + O sorununu çözmek için uzantıyı kaldırıp yeniden yükleyin.
Shahedur Rahman

21

Eklentilerin farkında değilim, ancak bölgelerden bahsettiniz ve böyle bir şey yapmakta yanlış bir şey görmüyorum ...

foreach (Item i in Items)
{
  #region something big happening here
  ...
  #endregion

  #region something big happening here too
  ...
  #endregion

  #region something big happening here also
  ...
  #endregion
}

DÜZENLEME: Sorunun DÜZENLEME yanıt olarak: Haklısın, bir sürü bölgeyi her yere yapıştırmak ideal değildir ve yeniden düzenleme muhtemelen yoludur. Ama öyle görünüyor ki, kodu sizin için "organize edecek" büyülü bir şey arıyorsanız ve bunun var olduğunu düşünmüyorum.


IIRC, bir işlev içindeki bölgeleri tanımlayamazsınız.
Joel Coehoorn

10
kodu doğrudur; böyle bölgeleri tanımlayabileceğiniz yerlerle sınırlı değilsiniz (başlangıç ​​kapsamının dışında bitmediği sürece)
John

3
Lütfen orijinal sorunun düzenlenmesine bakın; geliştiricinin el ile yapması gereken bir işlem (bir veya iki tıklamayla bölge kaydırma kısayolu bile olsa) bunun otomatik olarak yapılması sorusunu / arzusunu gerçekten yanıtlamıyor
Grank

1
@Joel Sanırım VB.NET'i düşünüyorsun
Bryan Anderson

Bu iş parçacığında bağlı bulduğunuz tüm eklentiler bölgeleri kullanmaktan daha iyidir. Gece gündüz.
Glimpse

19

Visual studio içindeki belirli metin bloklarını daraltabilirsiniz, ancak otomatik anahatlamayı kapatmanız gerekir.

Kod pencerenizi sağ tıklayın ve (Anahat | Anahattı Durdur) öğesini seçin

Ardından, bir metin seçin, sağ tıklayın ve (Anahat | Seçimi Gizle) öğesini seçin.

Otomatik anahatlamayı tekrar açtığınızda, özel "Bölgeler" artık çökmeyecektir.


3
Yeterince adil. Bu soru sayesinde, otomatik bloklamaya bu blokları eklemenin bir yolunu bulmayı umuyorum, çünkü onlar için gerçekten mantıklı değil.
Grank

1
Matt, otomatik anahatlamayı durdurmadan (VS 2012'de) yapabilirsiniz. Sadece metni seçin ve anahat> seçimi gizle
nawfal

3

Visual Studio 2008, işlevleri aynı kod hiyerarşik düzeyinde tuttuğunuz sürece işlevlerin içindeki bölgeleri destekler

#region Won't work
for(int i = 0; i<Count; i++)
{
//do something
#endregion
}

for(int i=0; i<Count; i++)
{
#region Works fine
//do lots of stuff
#endregion
}

5
Bu 2008'de yeni bir şey değil. 2005 bunu da destekliyor.
Kon

3

Farklı bir şey söyleyeyim: (ctrl+m,ctrl+h)veya tuşuna basın düzenleme> anahat> seçimi gizle çok kullanışlı.


1
@Mahdi soru, kod bloklarını daraltacak araçla ilgiliydi. Bazı kombinasyonları tıklarsanız, ifs, for / while döngüleriniz vb. Daraltılır, böylece kodunuzu mümkün olan en üst düzeyde okuyabilirsiniz. Sonra kodun derinliklerine inersiniz. Çözümünüz uygun değil çünkü öncelikle tüm bölgeleri daraltmanız gerekecek ve tam olarak hangi bölgenin olduğunu göremiyorsunuz. Gelecekte bol şans.
Roma

1
önce bir şeyi yorumlayabilir ve daha sonra bunun altında saklanabilir, böylece daha kolay ve esnek olur
M


0

VS 2010'da Microsoft'un Yönetilebilir Genişletilebilirlik Çerçevesi (MEF) kullanarak WPF adorner yetenekleri eklediğini ekleyeceğim, bu, kaynak kodu düzenleyicisini daha okunabilir ve erişilebilir hale getirmek için onları daha iyi bir şekilde organize etmemize izin verecektir.

Örneğin Scott Gu'nun PDC 2008'de gösterdiği Özet Yorumlar görselleştiricisi .

Geliştiriciler için daha iyi bir yarın için sabırsızlanıyoruz :)


0

Coderush sizin için tüm kod bloklarını özetleyecektir. Blokları genişletmenize / daraltmanıza izin verip vermediğinden emin değilsiniz, ancak bir sonraki en iyi şey ana hatları çizmektir. Bildiğim kadarıyla blok daraltma sağlamaz coderush yerine resharper kullanın:


0

Bunu Visual Studio 2013 için buldum ve çok yararlı buldum. {.....} ile kodunuzun etrafına basit parantez koyarsanız bile çalışır

Paylaştıktan sonra başka birisinin de bu bağlantıdan bahsettiğini gördüm. Benim oyum da bu araç için.

Visual Studio 2013 için C # Anahat Aracı


0

VS2017'de kodun bir bölümünü vurgulayabilir, sağ tıklayın, Anahat> Seçimi gizle'yi seçebilirsiniz. Bu, kodu daraltır ve vurgulanan bölüme geçiş sağlar.


-2

# region, # endregion akıllı seçenektir.


10
StyleCop kuralı SA1123: DoNotPlaceRegionsWithinElements: Bir kod öğesinin gövdesine bir bölge yerleştirildiğinde bu kuralın ihlali oluşur. Visual Studio da dahil olmak üzere birçok düzenleyicide, bölge varsayılan olarak daraltılmış olarak görünür ve bölge içindeki kodu gizler. Kodu zaman içinde korunduğu için kötü kararlara yol açabileceğinden, bir öğenin gövdesi içindeki kodu gizlemek genellikle kötü bir uygulamadır.
Sam Harwell
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.