W Rider (w zasadzie samodzielny ReSharper dla tych, którzy nie wiedzą), nie mogę zrozumieć, dlaczego automatyczne formatowanie kodu umieszcza pustą linię między moimi instrukcjami if.

Przed formatowaniem:

string output = "";

if (i % 3 == 0) { output += "Fizz"; }
if (i % 5 == 0) { output += "Buzz"; }

if (output == "") { Console.WriteLine(i); } else { Console.WriteLine(output); }

Po formatowaniu:

string output = "";

if (i % 3 == 0) { output += "Fizz"; }

if (i % 5 == 0) { output += "Buzz"; }

if (output == "") { Console.WriteLine(i); } else { Console.WriteLine(output); }

Za życia nie potrafię wymyślić ustawienia, które to robi, ale jest to dość irytujące, gdy masz wiele podobnych jednowierszowych instrukcji if zgrupowanych razem, a Rider/ReSharper cały czas je przemieszcza.

1
IneffaWolf 4 grudzień 2018, 03:50

1 odpowiedź

Najlepsza odpowiedź

Ustawienie, którego szukasz, można znaleźć za pomocą następującej nawigacji: File -> Settings -> Editor -> Code Style -> C# -> Blank Lines

W podsekcji Blank Lines in Code szukasz After statements with child blocks. Powodem, dla którego to konkretne ustawienie dodaje linie w twoim przypadku, jest włączenie nawiasów klamrowych.

if (i % 3 == 0) { output += "Fizz"; }
if (i % 5 == 0) { output += "Buzz"; }

Może być również napisany jako

if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";

Instrukcje nie będą już uważane za zawierające bloki podrzędne, a zatem nie będą miały na nie wpływu. Jeśli zachowanie nawiasów klamrowych jest częścią pożądanego stylu, możesz ustawić wartość After statements with child blocks na 0 i uzyskasz pożądane zachowanie formatowania podczas korzystania z bloków jednowierszowych.

3
Jonathon Chase 5 grudzień 2018, 04:15