調べ物した結果

現役SEが仕事と直接関係ないことを調べた結果とか感想とか

「全力でC#の好きなところをお話しするので聞いてください」というので聞いてみました。

nrs-seminar.connpass.com
とても楽しそうな会なので、youtubeみてみました。本当は当日参加したかったんだけどね。
これもINPUTではあるとおもうのでOUTPUTしてきます。

ざーっと触れていった内容に対して感想とか思ったことを書いていく。

まず全体

終始なごやかな感じで。とてもよかったです。C#やってみようかな。って人は増えたんじゃないかな。
初めて触る人もざーっとみて。雰囲気をつかめる(それはいいすぎかな)そんな感じ。
とにかくタイトル通り。C#への愛が溢れる感じの内容でした。いいですね。こーゆーの。
Microsoftを信じろ。
ぼくはもともと仕事でVB.NETを使ってたから比較するような感じで覚えているんだけど、
C#ってVBと違って厳密に書かないといけないんだよね。自由度が少ない(表現幅は広いのに)
これがすごい好きなとこではある。SQLとかもそうだけど。めちゃくちゃな自由度なので。そのあたりのつらみがC#は出にくくてすごくよいな。
と思う。VBだとね。ちょっといろんなこと省略できちゃうから。そうすると省略するべきなのかどうなのかってこと悩んでしまうんだよね。
それがない。そーゆーとこが次の話にも影響してると思います。

メソッドのデフォルトオーバーライド可否

いきなり重いんだ。基底のクラス側で子クラスをコントロールできるってね。
つまり基底でちゃんと設計しないと辛い思いしたりするので。僕は主に辛い思いする方ですね。
基底の担当チームに話つけるのが面倒なんだなーこれが。

VisualStudioめっちゃ便利でっせ?

いや。ほんとね。めちゃくちゃ便利。なにがどう便利かって本編をぜひぜひというか。
めちゃくちゃ万能。まさしく統合開発環境。それがVisualStudio。
そしてWindowsForms。最高。
今でもさっと。さらっと作ろうと思うとついついWindowsFormsでプロジェクト作ってしまったりする。
(個人的にはWPFも同じようにかけるようになりたいな)
それぐらい楽。真面目にビジネスユースでアプリを作ろうと思うと辛いとこが出てきたりはするんだけど。
簡単すぎてたくさん悪魔がうまれる的なことを動画内でも言われますが。悪魔と語り合ってた私からすると本当にその通りでね。。。

NULL合体演算子

こいつに出会ったのは最近ではあったりする。とてもよい。すごく綺麗。無茶な使い方も(やればできるけど)できない。
いろんな機能はあるんだけど、便利な機能は使い方が限定的だったりするんだけど、わりと限定せずに使えたりするのね。
そうすると悪魔が生まれるんだけど。NULL合体演算子については悪魔が生まれにくい。そこが好き。

NULL許容型

便利なんだけど。便利なんだけど悪魔が生まれやすいから避けてはいるが。
好きなとこだっつってんのに「あんまり好きではない」ってのずるい。笑う。

Linq

Linqは最高なのです。最高ではあるんだけどね。
まー思うところもあるんだけど。過去の記事(主旨は別件という)でざーっと書いてた。
couraeg.hatenablog.com

どうなんだろうな。そもそもコレクションを直接つかわずにちゃんとクラス設計すればLinq書く機会って減るんじゃないかな。
とか最近はそう思います。
速度に関しては気になるレベルで書くようなことは少ないかもしれないなーと思った。
Linqは自由度高いです。メソッドチェーンでめちゃくちゃできます。その結果悪魔が生まれます。

var

最高。型推論はめちゃくちゃに最高です。メモ帳でデバッグするときに困るから明示してほしいというようなこと言われたり言われなかったり(そこは環境合わせましょう)
ただなんでもかんでも。ではなくて個人的には右辺から型が推測できる場合につかってます。あと動画中のEnumerableシリーズ。いちいち書いてらんないからね。(かけって言われた時はvarってかいてVisualStudioに認識させてそれメモってる始末だし)

型が書いてあっても、書いてなくても可読性は変わらない。ってのはちょっとどうなんじゃらほい。
という気持ちはなくもないが。まーこれvarかけるとこは型も推測できるから。明示する必要ないなーとも思いますた。
あーということは「書いてあっても、書いてなくても。。。」ってことでこの記事書いてる最中に「あ。別にいっか。全部varでいいや。」
みたいに気持ちが傾いた。

イベント構文

これは。C#の特徴だったのか・・・しらなかった。
とくに全然。まるっきり意識してなかったから気にしてなかったけど。他の言語だともしかしてものすごくめんどくさいのか?
どこまでがC#のあれなのか。

Using最強

usingは最強よ。IDisposableさえサポートしてればいいからね。vbのWithはちょっとね。デバッグが地獄になる。

Jsonのクラス定義を作ってくれる。

しらなんだー。。。なるほど。。。C#って開発環境がVisualStudioになるから、最強IDEの恩恵をもろにうけんだなぁ。

アクセス修飾子がまぁまぁ

うん。パッケージプライベートがほしくなるんだよなぁ。名前空間で制御したい。

ギルティクラス

名前がずるい。こんなん笑ってまう。拡張メソッドはほんとね。自由度が高い。つまり悪魔が生まれる。
どうしても。どうしても既存の型を変えられないときに使う。それ以外は「ギルティ」でいってる通りだと思う。最後の方に差し込まれててめっちゃ笑った。基本的にはラップした方がいいんじゃないかーな。と思ったりする。
ただ、完成前のざっと作る時はこれでいいんだよ。完成品として出すときに。あるいは出したとにずっとこれが残ってるのはまずいと思う。
リファクタリングしていけばいいんじゃないかな。使うなっていうより使えるタイミング(プロダクトの成熟度)とかが限定的かなって思う。思うだけ。
プログラムは成熟度あるからなぁ。早期に用いたりプロトタイプしたりするようなものだったりするのかなーと認識してる。

おわり。

楽しかった。何かが「好きだ」とかそーゆーのなんか感覚がわからなかったんだけど、わかった気がした。
それなら僕もC#好きかなー。好きだと思うなー。という感じ。もともと80点ぐらい好きだったんだろうけど。再認識できた感じで。よき。
よい動画ありがとうございました。