彼の書くコードはとにかくオーバーロードを全て用意しないと気がすまないらしく、30個くらいのメソッドを経由してようやく本処理辿り着く事もよくあるんです。彼曰く「全部用意しておけば拡張性が高い」だそうです。
public class Overloader {
public static void sendAdminMail() {
String to = "admin@admin.com";
String from = "hoge@admin.com";
sendmail(to, null, from, null);
}
public static void sendmail(String mailto) {
sendmail(mailto, null);
}
public static void sendmail(String mailto, String mailcc) {
sendmail(mailto, mailcc, null);
}
public static void sendmail(String mailto, String mailcc, String mailbcc) {
sendmail(mailto, mailcc, mailbcc, null);
}
public static void sendmail(String mailto, String mailcc, String mailbcc, String mailfrom) {
if (mailfrom.equals("hoge@admin.com")) {
sendMail(mailto, mailcc, mailbcc, null);
} else {
sendMail(mailto, mailcc, mailbcc, mailfrom);
}
}
private static void sendMail(String mailto, String mailcc, String mailbcc, String mailfrom) {
send(mailto, mailcc, mailbcc, mailfrom);
}
}
使い方ヒント: 「これは臭う」という行を見付けたら、各行の
をクリックしてマーキングしておきましょう(要Twitter OAuth認証)
拡張性高いのか?これ? staticにしてる時点で、既にポリモルフィズムを殺してない?
mailtoとmailfromだけ渡したいので、メソッド増やしてください。13~15行目のメソッドも消さないでね。
普通に:
public class FromTo { /*...*/ }
public class Overloader { public static void sendmail(FromTo fromto); }
Overloader.sendmail((new FromTo(from, to));
で。
「普通に」と言っている割に、だいぶ汚いけど。。
コメント投稿には、twitter認証が必要です。
Twitter認証
そんな彼への優しいコメント。
mailtoとmailfromだけ渡したいので、メソッド増やしてください。13~15行目のメソッドも消さないでね。