トップ «前の日記(2004-11-15) 最新 次の日記(2004-11-17)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2004-11-16

_ Javaらしい

うーん、インターフェイスを決めて、がんがん無名インナークラスで処理を差し込んでいくのがJavaらしい(Javaならでは)だと思うのだが。(半分は言ってみただけだが、半分はRubyらしさの「挙動によって多数のクラスを使い分けるようなものではなく、挙動の違いをブロックで指定できるようになる」についてRubyではそうは思わないがJavaだとそのほうが良いように感じるなぁ、という感想から割と本気——でも仕事上のコードは別だけど——)

_ うが

結構、間違ったこと書いてるよ。(追記:この書き方だと記事そのものについて書いているように読めますね。すみません。作者の声の部分についてです(例えば下に書いているようなこと)(更に追記:全然「結構、」じゃないのだが(2ヶ所だし明らかな間違いはML名だけ)、なぜ最初にそう書き始めたかやっと思い出した。最初に開発動機としてJavaには気に食わない点があるとしているのに、3番目の目的がJavaとは無関係な理由になっている点だ(っていうことは現実を無視して3個の目的と誤算を書こうとして題を決めたのではないかという疑念も出てくるが、実際には3つの目的は正しくその通りで、最初に要約するときにちょっとしくじったというのが正解。したがってそこを読んだ瞬間に「結構、」と書いたのだが構造的な問題なのでついさっきまで何が間違いなのか忘れていた。っていうかこれは修正してもらってもしょうがないな、今更)。

ruby-listじゃなくてruby-talkだし。

あと、謝辞を入れてるけど(多分、桑島さんだとは思うけど)テストを手伝ってくれた無名の人のことを書き忘れてますね。感謝してるです。

それから、babieさんから指摘されて目的の2が誤解を招くかもと気付いたので補足。

例)今、こんなクラス(例えばStruts用にモデルとして作成したクラス)があるとして
public class Foo {
    public ResultData {
        String name;
        private ResultData(String s) {
            name = s;
        }
        public String getName() {
            return name;
        }
    }
    Connection conn;
    // DI.
    public void setConnection(Connection c) {
        conn = c;
    }
    public ResultData searchName(String address, String account) {
        assert conn != null;
        ResultSet rs = null;
        try {
        ....
            ResultData r = new ResultData(rs.getString(1));
            return r; // こういう連続した2行でしか出現しない変数に複数文字割り当てるのはムダ。
        } finnaly {
            if (rs != null) {
                try { rs.close(); } catch (SQLException e) {}
            }
        }
    }
}

これをシェルの中で使いたいと仮定する(この例はやたらと単純なのでRuby-DBIで充分だけど)。テストというわけではなくて、たとえばフラットファイルで与えられた行から(この例で言えば)名前を得て別のファイルへ追加して書き出すとか。

っていうような場合にrjbを使う。DI前提としているのでこのへんは楽なのだ。

#っていうか、CLASSPATHは修正しなければ。っていうか、桑島さんのパッチの取り込み含めてさっさとやんなきゃ(と言いながら週末を待つ)

#RubyJDWPはおもしろいな。

本日のツッコミ(全1件) [ツッコミを入れる]
_ ttate (2004-11-16 12:23)

間違いは「作者の声」のところでしょうか?急なお願いにも関わらず書いていただいたので感謝しています.可能なら訂正したいと思いますのでご連絡ください.本文についての間違いも同様に訂正させていただきたいと思います.


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|

ジェズイットを見習え