ミノ駆動本を読みました

本の紹介

gihyo.jp

これです。最近何かと話題になっているのをみたのと、競プロライブラリの構成に迷ってたので、何か解決しないかなと読んでみました。

自分にとっての感想

自分視点だと学ぶことが余りなかったように感じました。というのも、内容が嫌いというよりは、これまでライブラリ整備をしてきた中で直面して調べた問題や他の人のライブラリを見る中で学んだことのまとめという感じでした。いい復習にはなるし、これまで悩んでたことって割といい問題だったんだなとも思えたので読むのは楽しかったです(1日かけて読了)。

ライブラリ整備を始めてみたい!みたいな方にはおすすめできます。こだわりが強くなって精進をする人から盆栽をする人にジョブチェンジしてしまう可能性もあるので、そこは自己責任。

1年前から業プロを始めたのですが、憧れている先輩のコードが確かにこうなっているなあと思える場面が多かったです。

でも難しいですね。バカでかclassを使わざるを得ない時や、計算量的にvecのcloneを毎回するべきではない時があります。個人的にはトレードオフの関係だと思っています。 満たすべき要件を整理した上で、自分がbetterだと思える選択をしたい(これが難しい)。

こういう内容を全員が知っておくべきとは言わないんですが、開発しやすい変数ってどんなかな~とか、変更範囲をどこにまとめようかな~とかみんなが考えることができると、嬉しいですね。みんなが考えて議論していけば、変更しやすいコードになっていく気がする。とはいえ、業務で書くコードって合計10000行とかになってしまうので、ある程度は慣れるまで時間がかかってしまいます。なんか半年かけてやっとコード全体像がわかってきたってレベルです。ドメイン知識が難しいので、仕方ないのかな。

Rust

あとRustが素晴らしいですね。mut&mut& で所有権や可変性などについて教えてくれているので、安心できます。なんかこういうのが怪しい分野があるらしい(unsafeな世界)ので、挑戦するときは気をつけたい。

あと trait の使い方が見えた気がしました。traitの関数に初期設定(特にオーバーロードしなかったらこうなる)みたいなのができて、実際に使用するクラスでオーバーライドするか選べるみたいな機能があると嬉しい気がしていたけど、機能の異なる関数を同じロジックで流用する気もしてきた。迷うぜ、、、。

Python

Pythonが僕が普段使っているオブジェクト指向言語なんですが、これには活かせる場面が多そうですね。それはそうと早くPythonにはクラス変数にprivate, public 設定をください。_とかいうローカルルールを許すな!!

宣伝

github.com

私の競プロライブラリです。使ってみてね。