山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

わかる

失敗から学ぶAPI設計

Twitter4Jの作者の方のスライドですかね。

「シンプルにYAGNI

「クラス数は極力少なく」

まさにそのとおり。

将来の拡張性は考え出すときりがないですから。

いかにコードを短くできるか知恵をしぼりたいです。

「インターフェースは(なるべく)使わない!」

これも同感。

YAGNIの原則に従えば実装クラスが1個なら

インターフェースは作るべきでないと思います。

コード追いにくくなりますし変更するとき常に

インターフェースと実装クラス両方変えないと

いけなくなります。

ただし設計するときにそのクラスを使う人の視点で

設計するということは重要です。

言語仕様のインターフェースでなく、設計において

インターフェースを考慮するということです。

「クラス継承はさせない」

「副作用を生まずに継承を許す設計はすごく難しい」

これもそのとおり。

子クラスからいろいろ触ってはいけないところも

触れてしまいますので。

継承はすごく難しいのです。

デザインパターンを適用しない」

これもYAGNIの原則でどうしても必要なところだけに

したほうがよいです。


他にfinalをつけるとかパッケージを分けないとか

なるほどなと思いました。