java プログラム

◆ 全般
・ネストを深くしない。適切に return, continueを使用する
・リフレクションはデバッグリファクタリングしにくくなるため
できるかぎり避ける
・オブジェクトの引数は実行時エラーになるのでなるべく避ける
Generics

◆ I/O
FileInputStream, FileOutputStreamをそのまま使わない
バッファリング (ファイルをすべてbyte[]で読む場合は別)
java.util.Properties.load() 中でBufferedReaderを生成

◆ 同期
・synchronizedブロックは早くぬける
・synchronized中でメソッドを呼ばない、通信をしない
?volatileとsynchronizedの使い分け

◆例外
・例外を適切にキャッチする
- 1つの例外で全体が止まらないようにする
ループ中の例外 (とめる場合も有り)
- 例外を握りつぶさない
→ 適切な場所でハンドリングする
- 例外が繰り返される形にしない
(ループを例外でぬけてまた同じ例外を繰り返す)

◆スレッド
・スレッド数、synchronizedは最小限にとどめる
→ invokeLater
・1つのデータに変更、参照を行うスレッドは最小限にする

・classのスタティック変数を作業領域などに使う場合は
複数スレッドからの呼び出しに注意する

◆ORB
・更新スレッドなど、とまってはいけないスレッドから
ORB呼び出しはしない

gc
・描画ループなどではIteratorは避ける(オブジェクトが生成されるため)
gcをしても問題ないタイミングがある場合は、そこでgcを実行する

◆バグ
・スレッド、再起、呼び出したメソッドの先で
変数の上書き、変更をしていないか?

■ゲーム
・できる限りリソース化
スクリプトのリソース化 (Jython)
→ 実行時エラーにならないようにする(チェック)
・データ、リソース、プログラム(クラス)をサーバ、クライアントのどこにおくか

DB
×速度
○WEB連携、ツール