Arrow if が大量に使用されている状態。 早期リターン や 別メソッドに切り出 して、脳みその一時領域を解放して あげるべき。 public void arrow(){ if (A != null){ if (B != null){ if (C != null){ if(D != null) {} } } } // ここで、AやBを使うかも… } public void arrow(){ if (A == null){ return; } if (B == null){ return; } ・・・ }
★ Primitive Obsession プログラムが用意した型しか使って いない状態。 プリミティブ型のint , long等 だけの話ではない。 自作型にすることで、fromXXToYY -> toYY だけで伝えられるようになる。 public String fromJaToEn(String ja){ return this.translate(ja); } public English toEn(Japanese ja){ return this.translate(ja); } public abstract class Language{ String 文字; } public class Japanese extends Language{} public class English extends Language{}
★ Primitive Obsession List や Mapも対象。 単純なListではない限り、 同じListでも違う挙動をする可能性 があるので、別クラスにした方が良 い。 通称:FCC (First Collection class) public class Duel{ List deck; // 山札 List trash; // 捨て札 List banish; // 除外 } public class Duel{ Deck deck; // 山札 Trash trash; // 捨て札 Banish banish; // 除外 } public class Deck{ List deck; } …
★ Data Clumbs 本来は一か所で管理されているべき、 データが散らばっている状態。 掲載開始、終了の掲載期間や X, Y, Zの座標等。 public class Notice{ String id; String description; LocalDateTime displayStart; LocalDateTime displayEnd; } public class Notice{ String id; String description; Term displayTerm; } public class Term { LocalDateTime start; LocalDateTime end; }