概要
(書きかけ)
C# は、企画段階では “Safe C” (安全な C 言語)と呼ばれていた時期もあるそうです。 プログラマーが陥りがちなミスを避けるため、間違いそうな文法を避けたり、細かな規則を設けています。
予定
http://www.slideshare.net/Coverity/the-psychology-of-c-analysis-24025354
switch fall through
これはでも、今の感覚からすると「breakを書かなくてもcaseをまたがない」にした方が好感度高そう。
大体の人は「いちいちbreak書くのめんどくさい」って言うし。
実際、最近の言語でbreak書く言語あまり見ないし。
この辺りはC言語からの負の遺産。
unfase 制限
実装依存をなくす
x = ++x + x++; とかの、term の評価順
配列の境界外アクセス禁止、lengthを自分で知ってる
{
{
var x;
}
var x; // error
}
未初期化変数禁止、フィールド/配列の0クリア
non-null 参照の考え方と相性悪いけど
数値系の暗黙的変換なし
ポインター ⇔ 整数 ⇔ char, bool, enum
符号
x + 1; みたいな、何も起こさない式だけを認めない
if (x = 0) エラー
return してないパスを認めない
