tree_tips 2014-12-29 06:13:14

[Java] オーバーローダー このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

彼の書くコードはとにかくオーバーロードを全て用意しないと気がすまないらしく、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);
    }
}

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(7)

#1 InternalServerE 2015-03-20 20:21:59  

そんな彼への優しいコメント。

  • mailtomailfromだけ渡したいので、メソッド増やしてください。13~15行目のメソッドも消さないでね。
  • 単体テスト、ちゃんと全コード網羅してね。
#2 shanxia1218 2015-05-23 13:21:07  

拡張性高いのか?これ? staticにしてる時点で、既にポリモルフィズムを殺してない?

#3 9YdxOr 2015-06-03 06:33:22  

mailtoとmailfromだけ渡したいので、メソッド増やしてください。13~15行目のメソッドも消さないでね。

普通に:

public class FromTo { /*...*/ }
public class Overloader { public static void sendmail(FromTo fromto); }
Overloader.sendmail((new FromTo(from, to));

で。

#4 KudouJ 2015-06-06 03:17:02  

おっ、これだけあれば安心やな(鼻ホジー そして実は一番最後は overload してない罠

#5 askyq 2015-06-21 09:24:51  

30個くらいのメソッドを経由してようやく本処理辿り着く事もよくあるんです

いつかスタックオーバーフローを起こしそう

#6 InternalServerE 2015-07-04 22:22:25  

3

「普通に」と言っている割に、だいぶ汚いけど。。

#7 migimatsu 2017-07-24 18:07:20  

mail の性質も考えずに引数の自由度上げても何の意味もないでしょう Java がデフォルト引数認めていない所もあるけど、これはない

コメント投稿には、twitter認証が必要です。

Twitter認証

このウンコードに臭った人は、こちらのウンコードにも臭ってます

[Java] もうコメント書くなお前

このエントリーをはてなブックマークに追加

改修案件でぶち当たったソース マジでこ...

/**
  *
  *   〇〇の値を取得する
  *
  */
pu...

鑑賞する »

[Java] 連番

このエントリーをはてなブックマークに追加

もはや人間が読むものではない。

...

package com.renban.erq053.czp008;

/**...

鑑賞する »

[Java] nullチェック

このエントリーをはてなブックマークに追加

SVNの更新内容を眺めてたら、凄いコード...

// nullチェック
if(list.isEmpty(){
    // ...

鑑賞する »