A6hkkelt

2017-04-21 star__hoshiCreated on 2017-04-22 by star__hoshi

    おしごと

    社内勉強会をやった。
    資料を公開するか迷っていたが、雑に公開したけどそれなりに参考にしてくれる人がいたのでエイヤで公開してよかった。

    モバイルアプリアーキテクチャ勉強会 - Qiita

    wikihub

    数時間繋がらない状態だったけど戻ってきてくれてよかった、いつもありがとうございます :pray:

    オブジェクト指向設計実践ガイド

    25%まできた。
    ためになる!(いつもためになるって言ってる気がする)

    Gear と言うクラスを愚直に作った後に徐々に綺麗にしていく流れ。
    自分はメンバ変数をいろんなところで叩いてしまうのだが、この本によるとアンチパターンっぽい...。

    • 単一責任のクラスを設計しよう
    • シンプルであれ
    • 設計とはアプリケーションの可変性を保つために技巧を凝らすことであり、完璧を目指す行為ではない
    • TRUE
      • 見通しが良い(Transparent)
      • 合理的(Reasonable)
      • 利用性が高い(Usable)
      • 模範的(exemplary)
    • TRUE なコードを書くために、それぞれのクラスが、明確に定義された単一の責任を持つ ように徹底すること
    • 2 つ以上の責任をもってはいけない
    • クラスが実際に何をしているか、1文で表現できるか?
      • それと、またはみたいな言葉が出たら2つ以上の責任を負っている証拠
    • 設計を決める時、何もしないことで将来的なコストが変わらないなら何もしないで良い
    • 今と未来の可能性のトレードオフを理解しコストが最小になる決断をする
    • 変数はそれらを定義しているクラスからでさえ隠蔽しましょう
      • ruby の attr_reader を使う
      • ジャバで言うと getter, setter かな?
    • メソッドもクラスのように単一の責任を持つべき
    • 1つのこのに専念するクラスは、その1つのことをアプリケーションの他の部位から「隔離」する
    • クラスが知るべきことは自身の責任を果たすために必要十分なことのみ
    • dependency injection で依存をクラスの外にだす
      • Ruby は Interface ないから DI できないと思ってたけどそもそも動的型付だから Interface とかいらないんだった...
    • 場合によっては依存を隠すのではなく、逆に依存部分を強調することでわかりやすくする
    • 初期化の引数にハッシュやデフォルト値を使うとわかりやすい
    • 初期化の引数を変えられない場合(3rd party ライブラリとか)はファクトリーでラップすると良い