新年あけましておめでとうございます。時が過ぎるのは早くてもう2月ですね
すいません、深刻なネタ不足で「週1を目標にC#記事を書く」といいつつ1カ月ちょっと放置してました🙇🙇🙇🙇
2月からは週1で書けるよう若干ネタを貯めてるのでたぶん復帰できます。まぁ小ネタしかないけど。
というわけで、今日のC#記事は、今まで説明もなしにコード提示などを行ってきたので個人的なコーディングスタイルについてです。
基本
基本的にはC#の標準API/MSのガイドラインのような感じです。
個人差があるところを挙げると以下の要素があります。
- privateメンバーはlowerCamelCase
- 型推論は控えめ
- 修飾子はできるだけ省略しない
- インデントはスペース4文字
privateメンバーはlowerCamelCase
たまにprivate
メソッドをUpperCamelCase
で書く人を見かける(たまにではなくほとんどの場合でだけども)のですが、自分はprivate
メソッドもlowerCamelCase
です。
原因としては自分の経歴が第1言語がPHP、第2Javaだったということが多少はあるかもしれませんが、ただ単純にprivate
であることをはっきりと表現したいからです。
もちろんprivate protected
やprotected internal
などはUpperCamelCase
です。
いちおうガイドライン的にもセーフでして(というか、.NET的にはprivateなんだから勝手にしろという感じ)、自分が書くコードで自分だけの影響範囲なのでまぁprivate
をlowerCamelCase
にするっていうのは今後も変えるつもりはないです。
型推論は控えめ
これについては型情報を最大限生かすというコーディングスタイルです。 一部の人ではなんでもかんでも型推論をして、変数名に型情報を入れる人がいるようですが、自分はそうではないです。
全部の型宣言で型推論をしないというのではなく、右辺で型が明示されてるときやジェネリクスの型パラメーターで型が長くなるときは型推論します。
例に挙げるとこんな感じ:
var program = new Program();
var list = new List<List<string>>();
// これ以外はほとんどの場合で型を明示する
また、基本データ型に関してはどんなときでも型を明示します。 理由は単純で基本データ型の変数名に型名情報を入れるのがダサいからなどなど。
修飾子はできるだけ省略しない
もともとはC#のデフォルト修飾子(クラスだとinternalだったり)を忘れてそのままプログラムを実行してしまうから、忘れないように付けていくという感じで始めましたが、今となってはVisual Studioの修飾子のコードハイライトの青色が好きだからという感じです。ええ本当に。
インデントはスペース4文字
Githubさえなければタブでもよかった、Githubでタブインデントがださいからスペース派になった、ただそれだけ。
今後は?
実はC#に対するコーディングスタイルは年単位で微妙に変わってきてます。
最近ではreadonly
を積極的に付けるようになってきてますし、ちょっと前までは{
, }
での改行はしない派でしたですし。
ちょっとずつ標準のスタイルに寄っていってますが、現状のところでこれ以上変わることはないと思います。