search
LoginSignup
3

More than 5 years have passed since last update.

posted at

updated at

operator overrideの使われ具合

どこかでoperator overloadは必要最低限に留めたほうがいいと書いてあるのを見たことがあります。
(C++の話をしているブログだったと記憶しています)
自分の中のイメージでもDart界隈にはあまりoperator overrideを使ってる人はいない印象があります。
実際有名Dartプロジェクトではどの程度使われているのか簡単に調べてみました。

調査方法

Githubから有名なDartプロジェクトをcloneしてきてoverrideを使っている箇所をカウントする

結果

redstone.dart

演算子 回数
[ ] 1
[ ]= 1
== 2

ちなみに[ ]の使い方ですが大文字でも小文字でもデータを取り出せるよう、こんなコードでした。

List<String> operator [](String name) => _headers[name.toLowerCase()];

dart-samples

演算子 回数
/ 1
* 1
+ 1
- 1
-expr 1
[ ] 1
[ ]= 1

ベクトル同士の計算を一通り用意していました。

angular.dart

演算子 回数
[ ] 18
[ ]= 10
== 6

[ ]演算子のoverrideを多用していました。

three.dart

演算子 回数
[ ]= 3
[ ] 4
== 1

3Dのライブラリということでもっとたくさん出てきそうだったのですが、
ほとんど使っていませんでした。

感想

[ ]のoverrideは積極的に使っていこうと思います。
それ以外の演算子のoverrideはあまり使わないのが普通なのかなと思いました。
そもそもDartが標準のベクトル型を用意すればこの機能自体をなくせるのではとも思いました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3