本記事は C# Advent Calendar 2023 の2日目の記事だ。
1日目は @RyotaMurohoshi 氏の 【Allって】LINQ、この場合どうなる?【空配列は?】 #C# - Qiita だった。
以前バズった空配列議論のツイートを例に、 .NET の LINQ の各エッジケースでどう振る舞うかまとめた記事になっている。
なかなかのボリュームで読み応えがある。
慣れていないと迷ったり勘違いしやすい話なので、参考になる。
C# を K&Rスタイル で整形したい
さて、 C# の既定のコードフォーマットでは、名前空間やクラス、メソッドなど、各種ブロックの {}
(中括弧・波括弧) の手前に改行が入る。(所謂、オールマンスタイル)
namespace MyNamespace
{
class Class1
{
static void Main(string[] args)
{
if (args.Length > 0)
{
;
}
else
{
;
}
try
{
;
}
catch
{
;
}
finally
{
;
}
}
}
}
言語の既定に従うのも悪くは無いとは思う。思うのだが、 Java, JavaScript, Go, Rust 等々、他のメジャーな C言語 スタイルの言語では、 Java のコーディング規約に則って改行を入れないの(K&Rスタイル)が一般的なので、 C# で改行を入れるこのコードスタイルはどうにも気持ちが悪い。(主張の強い個人の感想です)
手癖で改行を入れない書き方をしていても、 Shift+Alt+F
でドキュメントのフォーマットをすると改行されてしまう。
…と言うことで、 Visual Studio Code (VSCode) を使って C# の開発する際に、各種ブロックの {}
(中括弧・波括弧) の手前に改行が入らない形でフォーマットする方法を紹介する。
omnisharp.json
は機能しない
vscode でこの設定を変更する場合、古くは omnisharp.json
が使われていた。
ところが、 2023年中頃の VSCode の C# 拡張機能の更新 (v2.0.320) で、既定で Roslyn と Razor をベースとした新しい言語サーバーを利用するようになったため、 OmniSharp が使われなくなった。
このため、明示的に OmniSharp を有効 にしない限り、 omnisharp.json
に書かれた設定は機能しなくなっている。