java
この記事は、Play! framework Advent Calendar 2011 jp #play_ja : ATNDの11日目の記事です。さて、軽めに行きましょう!(ということにさせてください… 僕とPlay! とあるWEBサービスの受託開発案件があり、自分を含めてメンバー的にJavaプログラマが多かっ…
共通関数継承とは、あるクラスで共通的に使うだろう関数やメンバを、親クラスのメソッドやメンバとして定義するパターンだ。Constant interfaceパターンやimport staticあたりが関係するアンチパターンとされるモノの一つで、神様ルートクラスを嫌い、POJOを…
はじめに ソースコードは設計であり、コードの記述は品質に直結するのは言うまでもない。ちなみに、プログラマにとって特に重要なのは保守性だ。コードは書いた直後から保守対象となるからだ。コードは要求文書の範囲で動けばいいと思っている人がいれば今す…
メモメモ。他にあれば、ぜひおしえてください。 ソースコード中の改変コメント("// add 2011.02.03 katzchang start"等)は不要です。 元のソースコードのコメントアウトは不要です。必要ないコードはそのまま削除してください。 ifなどのブロック("{ ... …
この記事は Java Advent Calendar -ja 2010 の4日目のものです。 はじめに 継続的な開発では、データベーススキーマも段階的変化に耐えることが求められる。マイグレーション・システムが必要だ。 そこで、MyBatis Schema Migrationというのがあるらしいので…
import java.io.*; public class GitCommandSpike { public static void main(String...args) { GitCommandSpike spike = new GitCommandSpike("repos"); System.out.println(spike.version()); System.out.println(spike.status()); System.out.println(spi…
Java - Editor - Templates から設定する。 まず、既存のtest"test method(JUnit3)"とTest"test method(JUnit4)"は不要なので削除しておく。で、↓を追加する。コピペで大丈夫です。 Name: test Context: Java statements Description: hamcrest test method …
ポイントは 真っ先にコードをぶっこわせ! いやその前にバージョン管理に突っ込め! 安全にコードをぶっこわせ! 仕様化テスト書こうぜ! で、ようやく機能追加なりリファクタリングなり不具合の改修なりができる状態になります。以下詳細。 …と、続けようと…
仕様変更その2まで対応。 Clockオブジェクトを導入 記事にしやすいよう、モッククラスをテストないに記述してるけど、分けた方がいい。 でも、Clock.SYSTEM_CLOCKは、interface Clock内に定義すべき。通常使うだろう、デフォルトオブジェクトがわかりやすい…
TDD Boot Campの課題の再挑戦です。 仕様変更その1(事後の容量変更)まで対応。ここまでは大して複雑にはならないのは、前回の通り。スナップショットとして。ポイントは、キー管理を内部クラス"KeyHolder"に委譲していることか。put時の容量超過と、capac…
発生地域は、以下の2カ所が確認されています。 アクセス修飾子 private vs パッケージプライベート(またはprotected) continue/break 使っても良い vs 禁止 あと、個人的にはBeans否定派です。これも火種。
元ネタ What Kind of Differences? Consider the following class. It defines an object that is able to record all the messages ever sent to it, and then playback those messages to another object. 以下のクラスは、オブジェクトに送られた全てのメ…
public interface Foo { public String foo(); } public interface Bar { public String bar(); } public interface Baz { public String baz(); } public class FooBar implements Foo,Bar { //... } public class FooBaz implements Foo,Baz { //... } 極…
Structual Subtypingは、OCamlとかScalaとかにもあるらしい、アレです。 方針 一つのインタフェースに一つのメソッドが定義される。 インタフェースの継承は禁止。 利用側(今回はHogeクラスのhogeメソッド)では、必要なメソッドを持つ総称型として引数を受…
このコードが通らないので。 import java.lang.reflect.*; interface A { public String a(); } class A2 { public String a(){return "A2";} } public class Fuga { public static void main(String[] args) throws Throwable{ final A2 a2 = new A2(); Cla…
メモ。 素朴に。 public class Person { String name; String zipcode; String address; String phoneNumber; //getters & setters... } 郵便番号のチェックは必要だよね。 public class Person { String name; String zipcode; String address; String phon…
C_CTR009 繰り返し処理中のオブジェクトの生成は最小限にする 繰り返し回数の多いループの内部でオブジェクトを生成することは、生成に時間がかかるため回数によっては、大きなパフォーマンス低下につながることがあります。これを回避するには、ループ外で…
いやすいません、不当に低く見てたのは自分なんですけどwprivateにする理由の一つに、メソッドを壊す可能性があるから自由に使わせたくないっていう思想があるようだけど、継承したクラスをどう書くかなんてのは書いた人の責任だし、同じパッケージとして定…
package twitter4j; import java.util.List; public class MyTwitter extends Twitter { private static final long serialVersionUID = -4218983212013279106L; public MyTwitter(String id, String password) { super(id, password); } public List<Status> getRep</status>…
@IokeGround fib = method(n, if(n == 0, 0, if(n == 1, 1, fib(n-1) + fib(n-2)))). fib(10) http://twitter.com/katzchang/status/2450789054 とすると、 @katzchang 55 http://twitter.com/IokeGround/status/2450791565 こう返す。つまり、Twitterで@メ…
file.connectとdisconnectの方がしっくりくる件について。 データストレージ内の特定のID(ファイルパス)を持つ領域ってイメージというか。
java.ioと統合してほしいです。結構マジで。 フレームワークとか使う場合、あんまり意識しないかもしれないけど。
コマンド"ioke"から呼ばれるはずのioke.lang.Mainをベースに、とりあえずJavaからIokeを使うテスツ。 r.evaluateString("hogehoge"); で、IokeのRuntimeにメッセージを送る。ioke.lang.Runtimeには他にも、ファイルを受け付けるものがあったりStreamを受け付…
これ以上かかった人は 自分はかなりプログラミングができない。 とつらい事実を認識しましょう。 http://ameblo.jp/programming/entry-10001721422.html まぁ、そんなもんですよ。 以下、自分の回答。
メモというか。 内包とかJavaだと苦しいし、無限集合になるとマジどう扱うべきかわからん。 あと、コメントにも書いてあるけど、テストコードのリファクタリング、重複あるテストの削除とか整理とかって重要だと思うけど、その辺りの感覚がつかめない。書い…
んー、どういう現象なんだろう。
引数にメソッドの結果を格納させようとして、値保持用のクラスでStringをラップさせるハック。 原因は、char配列のポインタ風にStringな変数を引数に突っ込んで値を格納させようとしてるんだけど、残念ながらStringは不変で、そういうことができないので。 …
JavaScriptのthisではまった - No Programming, No LifeとJava の this について - SiroKuro Pageの話。 Javaでは動的に付けたり外したりできず、class宣言時にすべてが決まってしまうから、thisが参照するインスタンスは固定的にできるわけですね。 JavaScr…
guiceでやってみました。 import java.util.Date; import java.util.logging.*; import org.aopalliance.intercept.*; import com.google.inject.*; import static com.google.inject.matcher.Matchers.*; public class やる夫が { static final Logger logg…
id:S_a_k_uとの話の中で、「DI的な感じで委譲させるのはいいけど委譲のコード書くのがやたら面倒だよね」という論点において合意に至り、Proxyで何とかなりそうだよねという話になったので、何とかしてみた。コメントとか書いてません。悪しからず。 test TD…