C#でvarを使う

C#のvarについてまとめてみました。

MSDN/OSSでのガイドライン

MSDNGithubC#プロジェクトでスター数が多いdotnet/corefxとmono/monoのガイドラインです。

これらを見るとvarは右辺から型がはっきり分かる場合に限り使い、それ以外の場合は型を明示的に書くとなっています。

var stream = new FileStream(...); // good
var stream = OpenStandardInput(); // bad
InputStream stream = OpenStandardInput(); // good

varを使った場合の可読性について

型を明示的に使う理由として型が明示的な方が可読性が高くなるというものがあります。
しかし場合によってはvarを使っても可読性が損なわれないことがあります。

var tmp = ary[0];
ary[0] = ary[ary.Length - 1];
ary[ary.Length - 1] = tmp;

上記では配列の最初の要素と最後の要素を交換しています。
aryの型は分かりませんがコードを理解する上ではあまり必要ないように思えます。

コードによっては型が明示されていた方が読みやすい例もあるでしょうが、
varを使った場合に可読性が下がるかはケースバイケースだと考えます。
(上意見に関しましては後述の参考文献も参考のこと)

また最近のIDEではvarを使っていてもマウスオーバーで型が示されるためあまり困らないというのもあります。

varのメリット

varを使うメリットがいくつかあります

  • コードを書くのが楽になる

varならば書き始めるときその型が分からなくても良いですし、
ストローク数が少なくてすみます。

型を明示的に書いていた場合リファクタリング時にそれらが置換されてしまいますが、
varの場合はそれが起きません。

  • 長い型を書く場合と比べてスッキリする

まとめ

個人的には以下のような感じにしています。
基本的にvarが使える場合はvarを使います。
ただし型をちゃんと書いた方が可読性が高い場合は型を書くようにします。
(プロジェクトにコーディング規約がある場合はそれに従います。)

Mac OS X(Leopard)でlaunchdを使ってsynergycを自動で起動させる

※synegyについて
winとmac(とlinuxも可能)のマウスとキーボードとクリップボード共有ツール
サーバとクライアントがあり、サーバ機の使っているマウスとキーボードが他のクライアント機で使えるようになる

Winをサーバ、macをクライアントにする設定

○Win編

1.
http://synergy2.sourceforge.net/
からSynergyInstaller-1.3.1.exe をダウンロードしてインストール
2.
設定で「このコンピュータのキーボードとマウスを共有する(サーバ)」にチェックする
3.
設定を開いて
スクリーン名(=マシン名)を追加
例:
WIN-PC(Win)
mac-pc.local(mac)
リンクの設定をする
例:
WIN-PC の右側は mac-pc.local
mac-pc.local の左側は WIN-PC
4.
オプションの自動起動の設定でPCの起動時に立ち上がるようにする

mac

1.
http://synergy2.sourceforge.net/
からsynergy-1.3.1-1.OSX.tar.gz をダウンロードして解凍
2.
解凍したらsynergyフォルダをアプリケーションフォルダにつっこむ
3.
plistの作成
Macintosh HD>Developer>Applications>Utilities>Property List Editorを開き

Root
 Label synegyc
 ProgramArguments
  item 1 /Applications/synergy/synergyc
  item 2 -f
  item 3 192.168.XX.XX ←win機のアドレス
 Disabled false
 RunAtLoad true

を書いて~/ライブラリ/LaunchAgentsフォルダに保存する。(~/はユーザフォルダ。LaunchAgentsフォルダが無ければ作成)
※Mac OS X 10.5以降の場合 -f オプションをつけないと起動できません
(ターミナルから/Applications/synergy/synergyc -f 192.168.XX.XXを呼び出してテストした方がいいかも?)
4.
システムを再起動するか、コンソールでlaunchctl load ~/Library/LaunchAgents/synergyc.plistを実行するとsynergyクライアントが開始されます
(ちゃんとsynergycが実行されているかを確認するにはコンソールでlaunchctl listを実行してみて下さい)
5.
Winでjisキーボードを使っている人はキーボードレイアウトの設定が必要です
http://msyk.net/macos/winkeyboard/

今日の買い物

入門 ベンチャーファイナンス―会社設立・公開・売却の実践知識

入門 ベンチャーファイナンス―会社設立・公開・売却の実践知識

http://www.amazon.co.jp/gp/product/4478470812

ビジョナリー・カンパニー 2 - 飛躍の法則

ビジョナリー・カンパニー 2 - 飛躍の法則

http://www.amazon.co.jp/gp/product/4822242633

V字回復の経営

V字回復の経営

http://www.amazon.co.jp/gp/product/4532149347

http://www.amazon.co.jp/gp/product/4569625541


後で読みます。