【送料込】ハルシュタット Hallstatt EV30(9点セット) エレクトリックバイオリンEV-30 スーパーEXメロディ気象台 10:00~8/31 【2016年春夏新作】【無休で毎日注文中】

【送料込】ハルシュタット Hallstatt EV30(9点セット) エレクトリックバイオリンEV-30 スーパーEXメロディ気象台 10:00~8/31 【2016年春夏新作】

Coda Bow PRODIGY カーボン製バイオリン弓 Eastman Case バイオリンハードケース スタンダード Metallic Green メタリックグリーン【イーストマンバイオリンケース Standard】.Eastman イーストマン / Standard スタンダードバイオリンケース・レモンイエロー Gig Case / ギグケース - Oblong Brown《4/4バイオリン用ケース》, Hallstatt(ハルシュタット) バイオリン V28 1/8サイズ (全長44cm) V28-1/8 分数バイオリン KUN バイオリン 肩当て:ブラボー■クン BRAVO:メイプル&ブラス製,Schicker #011 バイオリン弓 【smtb-u】 STENTOR SV-180 1/8 《分数ヴァイオリンセット》,Violin Fitting SetBoxwood Black 3/4バイオリンケース 3/4 4/4 バイオリン弓 Francois Peccatte ぺカート・スクール 1850 フランス製,バイオリン弦 PIRASTRO PASSIONE set パッシオーネ(パッショーネ) 分数用ヴァイオリンケース Carlo Giordano(カルロジョルダーノ)TRC-100,大和製衡/YAMATO デジタル体重計(一体型)検定外品 150kg DP-7200,デジタル体重計WB-150セパレートタイプ用キャリングケース オプション品 タニタ,タニタRD-901BK 体組成計 インナースキャンデュアルブラック★全品!(P10倍)★★税抜5000円以上で★【10P06Aug16】激安祭【smtb-s】 タニタ UG-120-H(ライトブルー) 電子尿糖計,サムソン ウェアラブル活動量計(ウォッチタイプ)Gear S2 classic(ブラック) SM-R7320ZKAXJPカスタム クランプ式無線電力計 EC-10RF オゾンO3探知+メーター+コントローラ(RS485出力付) C-7305,エジソンの体温計Pro KJH1003【新生児~大人用】【非接触式体温計】 Withings Activit? Pop Activity and Sleep Tracking ウォッチ 腕時計 (Shark Grey) ウィジングス【不可】【05P06Aug16】【0806】,TTMデジタル握力計110kgYD TANITA ALBLO(タニタ アルブロ) HC-211-WH (ホワイト),JAWBONE ライフログリストバンド UP2ロープ ブラックダイアモンド (JL030303CGIJP) [0802summer_coupon] 【seca(セカ)】デジタルチェアスケール (検定付) seca956,【ボヘミアガラス】マイア ビアジョッキ【選択】『ツェーンレ ヘルスメーター エレガンススチール』~シンプルで実用的な機能~[SOEHNLE Elegance Steel]【smtb-KD】【 ドイツ 体重計 デジタル おしゃれ 健康 インテリア 雑貨 】 (株)タニタ 体組成計 インナースキャンデュアル RD-901-BK(ブラック)★税抜5000円以上で★激安祭【smtb-s】 […]

The post 【100ポットセット】「ローズマリー“トスカナブルー”」 ポット直径9.0cm appeared first on 【20ポットセット】「ペニーロイヤルミント」 ポット直径9cm.

【送料込】ハルシュタット Hallstatt EV30(9点セット) エレクトリックバイオリンEV-30 スーパーEXメロディ気象台 10:00~8/31 【2016年春夏新作】

【50ポットセット】「アスパラガス“スプレンゲリー”」 ポット苗 【50ポットセット】「ヒメツルソバ(姫蔓蕎麦)」 0.1m程度.【産地直送】芝桜80個入りポット直径9cm【代金引換不可】 コケ・砂苔(スナゴケ ネットマット) 緑の絨毯 8枚セット 屋上緑化 植木 庭木 苗木, ユピテル 7.0型ワンセグ内蔵ポータブルナビゲーション YPB741 モトローラ ハンズフリースタンド 20-66483-01R【YOUNG zone】,ブラザー工業 BROTHER ドラムユニット DR-190CL DR-190CL デンソーウェーブ HC56II TU アドバンストスキャンプラス(CCD)バーコードリーダー 【smtb-TK】,エプソン(EPSON) A3フラットベッドスキャナー/600dpi/A4片面4秒/1枚(300dpi) DS-50000ウェルコムデザイン 二次元コードリーダ USB I/F ストレートケーブル 1504A-SU【YOUNG zone】 Super Micro Super Micro CSE-510-203B【YOUNG zone】,RAIDON SR6600-5S-U3【YOUNG zone】 PABAS261 10.8V 48Wh TOSHIBA 東芝 ノートパソコン 交換バッテリー,PABAS240 14.4V 36Wh TOSHIBA 東芝 ノートパソコン 交換バッテリー,Club 3D CAC-1402【YOUNG zone】,ASRock Rack ASRock Rack 1U Storage System 1U12LW-C2750【YOUNG zone】 ミニマムサイズMini-ITXキューブケース【CoolerMaster】RC-110-KKN2-JP,【5個セット】変換名人 1.8"HDD→3.5"HDD変換(固定) IDE-18A35AF [PC]【10個セット】変換名人 CF1pcs→IDE44pinオス CFIDE-441IA [PC] 【PRICEDOWN】フェアリーパウダー★メンズストレッチVネックプルオーバー★全2色 (FP15-5105),フェアウェイアンドグレーン レディース ゴルフ スポーツ Sabrina Vest Black カルバンクライン ゴルフ レディス プリントスカート【インナー付】/9/CKL7041/ブルー/正規品/中国製,アルチビオ レディース/セーター(S)(M) archivio 518930-290 【A-64】ゴルフ ウェア★Birdie hunt (バーディーハント) レディース 半袖 ポロシャツ ハートマーク 総柄プリント スカル刺繍デザイン,【送料無料・返品交換不可】2016春夏 フラワーエンボス ポロシャツ(Admiral Golf/アドミラルゴルフ/レディースウェア)セールスタート【le coq sportif】ルコックゴルフ/レディースカーディガン/楽ちんコーデ/ゴルフウェア/レディース/吸汗速乾/UVカット/イボミ着用 キャロウェイ ゴルフ レディースウェア ラメボーダー フルジップ中綿ブルゾン 241-5258866 ◆ Callaway レディース 女性 女 ブルゾン 中綿 ボア アウター ジャケット アパレル ウェア アウター 長袖,キャロウェイ ( Callaway ) ゴルフ ( レディース ) ベアアイスプリントスカート 241-6125814 【国内正規品】【2016年春夏モデル】 ▼半袖ポロシャツ〔水玉〕 【M/L/LL寸:レディース】マンシングウェア マンシング マンシングウエア Munsingwear ゴルフウェア ポロ レディース【春夏モデル】 […]

The post ◆SKINS(スキンズ) A200 ウィメンズ 3/4タイツ ブラック×ブラック J61033008D BKBK L◆SKINS スキンズ下半身サポート 女性用【smtb-s】SKINS(スキンズ)下半身サポート(女性用) スキンズ(レディース) スポーツウェア スポーツ02p06Aug16 appeared first on フィラゴルフ レディース ロングパンツ 吸汗速乾&UVカット【2016年春夏】(FILA GOLF)ストレッチ 二重織り 両サイドポケット カーゴパンツ風.

スマートフォン用の表示で見る

にょきにょきブログ

【送料込】ハルシュタット Hallstatt EV30(9点セット) エレクトリックバイオリンEV-30 スーパーEXメロディ気象台 10:00~8/31 【2016年春夏新作】がご覧になれます

◎・キャロウェイ Callaway レディース2015年秋冬2WAY フルジップスウェットパーカー 10075314-241-5258867【02P06Aug16】 適切な Java コーディングのために心がけること

良いコードを書くために心がけることを箇条書き。


Close 処理を finally で行う

ダメな例

InputStreamReader reader = new HogeInputStreamReader(...);
doSomething(reader);
reader.close();

doSomething(reader); で Exception が発生した場合に close されない。
close 処理は必ず finally 節で行い、確実に close されるようにする。

良い例

InputStreamReader reader = null;
try{
 reader = new HogeInputStreamReader(...);
 doSomething(reader);
} finally {
 if( reader != null )
 reader.close();
}

close 処理に限らず、dispose 等でも同様に finally 節を使う。
リソースリークは発見・再現が困難なバグなので、確実に防ぐことを心がける。


equals メソッドをオーバーライドした場合は hashCode メソッドもオーバーライドする

これを守らなければ悲惨なことになる。

HashMap を例に考える。
まず下記のようなクラスを作る。

// hashCode メソッドをオーバーライドしていない
public class BadClass {
 @Override
 public boolean equals(Object obj) {
 return true;
 }
}

ではこの BadClass の挙動を確認。

public static void main(String[] args) throws Exception {
 BadClass bad1 = new BadClass();
 BadClass bad2 = new BadClass();
 System.out.println(bad1.hashCode());
 System.out.println(bad2.hashCode());
 System.out.println(bad1.equals(bad2));
}
// 実行結果
623839641
857681633
true

以上、ハッシュコードが異なる等しいオブジェクトができた。

さてこの BadClass のインスタンス bad1, bad2 を用いて HashMap を利用してみよう。

Map<BadClass, String> map = new HashMap<BadClass, String>();
map.put(bad1, "a string value");
System.out.println(map.get(bad2));

このコードを実行すると、何が表示されるか?
bad1.equals(bad2) は true なので、 "a string value" と表示することを期待するかもしれない。だがそれは間違いだ 。map.get(bad2) は null を返す。これは、HashMap 内で bad1 の hashCode が挿入に使われ、次に map.get(bad2) で検索される bad2 の hashCode は bad1 の hashCode とは異なるからだ。
つまり、equals をオーバーライドする時は下記の二点に注意すること。
・equals をオーバーライドする時は hashCode もオーバーライドすること
・等しいオブジェクトは等しいハッシュコードを返すこと


引数の型を Object にしない

本当に全てのオブジェクトに対して操作可能なメソッドなら良いが、そうでない場合、つまりいくつかの受け入れ可能な型があり、それらの共通のクラスが Object であるような場合は、受け入れ可能なクラスの数だけメソッドをオーバーロードすること。

例えば javax.imageio.ImageIO の createImageInputStream(Object) メソッドを見てみよう。

public static ImageInputStream createImageInputStream(Object input) throws IOException
指定された Object から入力を取得する ImageInputStream を返します。

http://java.sun.com/javase/ja/6/docs/ja/api/javax/imageio/ImageIO.html#createImageInputStream(java.lang.Object)

この getImageReaders は InputStream, File, RandomAccessFile を渡せば適切な ImageInputStream が返されるが、シグニチャだけではその情報は得られない。これらのクラスのインスタンスではないオブジェクトを渡すと null が返される。これは適切な birdierush バーディーラッシュ ゴルフレディース半袖ポロシャツ BR40015 ハイビスカス柄グリーン 日本製<在庫僅少>API では無い。引数を見て何を渡せば良いのかが明らかであること。それが適切なAPIだ。


メソッドのシグニチャで throws Exception しない

上記と似たような話だが、throws Exception はあまりに範囲が広いので、もう少し型を限定し、API使用者に情報を提供する。

例えば下記のようなコードではどのような例外が返されるかわからない。

get(long id) throws Exception 

それが下記のように、SQLException が返されるのが明らかであれば、このメソッドはデータベースに接続してデータを取得することが明らかだ。

get(long id) throws SQLException

このように、throws 節はメソッドの中身を推測できる情報なので、安易に throws Exception と書いてはならない。


throw new RuntimeException(e) しない

これも同様。throws 節を書くのが面倒だとか、適切な RuntimeException のサブクラスを作るのが面倒だとかという理由で安易に RuntimeException で包んではならない。
必ず適切な例外クラスを作成すること。

try{
 ...
} catch( Exception e) {
 // これをやってはいけない
 // 適切な例外クラスを作成すること。
 throw new RuntimeException(e);
}

引数の配列を直接フィールドに格納しない、直接返さない

配列オブジェクトの参照をクラス外部でも保持していることのメリットはほとんど無く、デメリットが多い。不変性を破られたり不正な状態になったりなど、想定外の挙動をしてしまうことがある。配列オブジェクトに限らず全てのオブジェクトなら同様であるが、特に配列オブジェクトに関しては気づかずに不正な状態を作ってしまうことが多い。
配列のやり取りはコピーを伴うこと。


Throwable を catch しない

明確な理由が無い限り、Throwable は catch しない。
Exception と異なり Error は致命的な場合があり、Throwable で十把一絡げに処理してはならない。
せめて Error と Exception は異なる catch 節で受け取り、Error を catch する理由をコメントに記述しておくこと。


Null チェックを行う

null になりうるものは null チェックを行う。
引数で渡されたオブジェクトの null チェックを怠り、別のメソッドにそのまま渡してそのメソッド先で NullPointerException が発生した場合はどの時点で null だったのかを判別しにくい。そのため、できるだけ入念に Null チェックを行い、NullPointerException 発生時には即座に原因を特定出来るようにすること。。

また、特に例外処理時には入念に null チェックを行うこと。何らかの例外を適切に処理したつもりでもそこで NullPointerException が出てしまったら目も当てられない。必ず null チェックを行うか、null が来ないことを確かめて例外処理を行なうこと。


Collection を返すメソッドは null を返さず、空 Collection を返す

「処理失敗時には null を返す」ような規約がない場合、空 Collection を返すこと。
また、null を返さないことが保証出来る場合、クライアント側の null チェックを省くようドキュメント化すること。

型パラメーターへのキャストを行わない

型パラメーターへのキャストは型安全性を崩壊させるので行なってはいけない。
参考:型パラメーターへのキャストは絶対に行ってはいけない


プリミティブラッパークラスを new しない

パフォーマンスのために自分で new しない。valueOf メソッドを使用する。valueOf メソッドを用いて得たインスタンスは、値によってはキャッシュ済みのインスタンスを返すので不要なオブジェクトを作らなくて済む。

new した例

Integer i1 = new Integer(1);
Integer i2 = new Integer(1);
System.out.println(i1 == i2);
// 実行結果
false

valueOf を使う例

Integer i1 = Integer.valueOf(1);
Integer i2 = Integer.valueOf(1);
System.out.println(i1 == i2);
// 実行結果
true

現在の Java の実装では、-128 〜 +127 までの範囲をキャッシュしているようだ。


文字列を == で比較しない

文字列もれっきとしたオブジェクトなので等価比較ではなく同値比較すること。文字列は不変オブジェクトなので等価比較したい場合は(おそらく)存在しない。equals メソッドや、より安全に 【Russeluno/ラッセルノ】ビッグリボンパンツ BIG RIBBON PANTSレディースショートパンツピンク MRS-12210wapache commons 等の StringUtil を使用して比較すること。

スターをつけました

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。。

読者です 読者をやめる 読者になる 読者になる
{yahoojp} {aoking.hatenablog.jp} zt02-myp12-gui-zd-3398