こんばんは。
夜の宮崎・鹿児島親善大使。ECテクノロジー事業部のきめさわです。
今年から僕たちはGoogleハングアウトを使って「リモートで勉強会をしてみる」というあらたな取り組みに挑戦しています。
リモートワークができるんだからリモートで勉強会もできるでしょ的な軽いノリで始めてみたのですが、
思っていたよりスムーズに、きちんと勉強会ができています。
リモートのお相手は、去年アラタナで開催された「第一回 南九州ソフトウェア設計Labo」や同忘年会に参加いただいた鹿児島の皆様。
「新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)」の第三章「コードの不吉な臭い」を毎回2臭いずつ、宮崎と鹿児島で1つずつ分担して、発表していくという内容となっております。
毎週水曜日に開催していて、今回が第二回。
思っていたよりも盛り上がり最後まで続けていけそうです。
第二回でどんなことが議論されたか一部紹介します。
【巨大なクラス】(宮崎担当)
- 「重複したコード」の臭いもする!
- メンバ変数は2つまででしょ。
- 基本は「クラスの抽出」でクラスを分ける
- 他「サブクラスの抽出」「インタフェースの抽出」も使える
- サブクラスはモデルでは使いたくない
- コンポジットパターンなどサブクラスが使える例もありますよ
- 10万行のクラスを扱っていた例も><;
【長すぎるパラメータリスト】(鹿児島担当)
- メソッドやファンクションの引数が多いという意味
- パラメータリストは3つまでが限界でしょ。
- 関数型のカリー化はどう?→書籍が関数型が流行る前のものなので、もし今書かれるなら言及があるかも
- 「メソッドによるパラメータの置き換え」
- 「オブジェクトそのものの受け渡し」
- 「パラメータオブジェクトの導入」は結構使える。
【リファクタリング時のテストはどうする?】
→ 「レガシーコード改善ガイド」
→ 「アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技」
- 基本は小さくリファクタリングする。
- モデルとDBをわける?わけない?
→ 最近はDockerとか簡単に仮想環境を立てられるので、すぐ作る・すぐリリースというものはわけなくても充分テストができる時代がやってきた!
→ ドメイン駆動設計ではモデル=ビジネス。なので基本モデルとDBアクセスは分けたいですね。
→ PHPのキラーツール。aspectMock!
lab.aratana.jp
現在2拠点でリモート勉強会を開催しておりますが、もしかしたら拠点を増やせるかも!!!実験してみたいな〜、なんて思っています。
もし興味がある方がいらっしゃればぜひご連絡ください!