- 数字に型をつけたい
- latとlngはnumberだけど意味はちがうので,それぞれ代入可能にしたくない
- できない
- 数字そのままじゃなくて,{lat: number} みたいなオブジェクトを作るとか…
- latとlngはnumberだけど意味はちがうので,それぞれ代入可能にしたくない
- 形は同じでも代入できないようにしたいl
- たとえばwidthとheightを持っているObjectがあるとして,形は同じだけどその意味はちがう,というときとか,それぞれ代入できないようにしたい
- これもできない
- 意味ないフィールドを足すとか…
- たとえばwidthとheightを持っているObjectがあるとして,形は同じだけどその意味はちがう,というときとか,それぞれ代入できないようにしたい
今日のVSCode情報
- フィールドとか書き換えるとき
- 「すべての出現箇所を変更」すると文字列的にがしがし変えてくれて思ってたのとちがう
- 「シンボルの名前を変更」すると静的解析して書き換えてくれる
- 最高
- TypeScript Toolbox - Visual Studio Marketplace
- importし忘れてるところでimportしてくれる
- 最高
素朴で抽象的なクラスを作りたい
クラスを設計するときの抽象的さの指標として以下のようなものを考えられないか,というのを考えた.
- メンバの数
- 少ないほど素朴,多いと複雑
- メンバの種類が,数字やbooleanのような組込みの値が多いか,何らかのクラスのインスタンスが多いか
- クラスのインスタンスをたくさん持つほうが抽象的
- 実装の中で登場する変数が,数字やbooleanのような組込みの値が多いか,何らかのクラスのインスタンスが多いか
- クラスのインスタンスをたくさん持つほうが抽象的
この考えでは,複数の数字をまとめてクラスにしていくと,素朴で抽象的なクラスが出来上がることになる.
たとえば,たくさんのメンバを持ってる中にwidthとheightを持ってるやつがいたら,widthとheightをメンバとして持つDimensionクラスのインスタンスを持たせるようにリファクタリングできる.
幅がいくつ以上だったら,という数字を使った論理式は,領域インスタンスに「十分な幅があるか?」と問い合わせることで,実装から数字を消して,抽象的な操作に置き換えることができる.
みたいな.
■
最近TypeScriptを書いてるのでVSCodeを使っている.補完が効いたり,定義にジャンプできたりしてたいへん便利.TypeScript自体も便利で,あまねくところに型がついてるので平和な気持ちでリファクタリングとかできる.
Perlは引き続きAtomで書いてるので,キーバインドは慣れなくて,よくめちゃくちゃになる.
あとは,「すべての出現箇所を変更」という機能があって,静的解析して同じ変数だけ変えてくれるのかと思ったら,そうではなくて,ファイル内を文字列操作で機械的に置き換えているようだった.
■
最近の鴨川ビールは夏の間は八瀬に行っているのだけど,今日は車出してくれる人がいて,やまむらやのコンロ無料レンタルでバーベキューできた.偶然自作のビールサーバーを持ってきてくれる人もいて,W-IPAを10リットル飲めた.
偶然やってこられたmasui先生とお話しして,フリック入力が難しい,昔はペンで入力できて,20年前は,…みたいな話を聞けておもしろかった.masui先生は一人だけ温泉みたいな感じで川に漬かられていた.
来年も絶対やりたいけど,雨降ったらどうしよう,というのはあって,いまのところ,雨降ったらラウンドワンとか行く? みたいな話をしている.