コードを書く際に大切なこと+α
StringBuilderで、Stringの値を結合しよう!
String aaa = "a"; String bbb = "b" String ccc = aaa + bbb;
はNGである。
なぜなら、この書き方は、メモリを使うから。
参照:http://www.javadrive.jp/start/stringbuilder/index1.html
こう書く
StringBuilder sb = new StringBuilder(); sb.append("abc"); sb.append("def"); sb.append("ghi"); Strint str = new String(sb); // "abcdefghi"
コードの整形 in Eclipse
Ctrl + shift + f コード形式の整形
Ctrl + shift + o 使用していないimport文の削除
これによって、SVNの変化を少なくすることができる。
jspで、マジックナンバーは極力使わない。
というか使わない。javaの方で、定義して、jspで、呼び出す形にする。マジックナンバーの使用は、将来仕様が変わったときに、変更箇所を増やすことになるので、保守上とてもよくない。
アンダースコアのついた変数はフィールド変数を表す記号
String _hogehoge;
は、フィールド変数を表す記号で、昔の人が習慣的に使っていたらしい。
しかし、シーザーと相性が悪いので、SAStrutsを使うときはあまり使わないかも!
try-catch
tryで例外が発生したときに、catchを実行する
そのとき、e.printStackTrace();は、catalina.outに例外が出力されるので、使わないようにする。
ロガーの使い方
プレースホルダーを使って、変数を結合して出力する
LOGGER.debug("staffName={}", staffList.get(0).getStaffName());
ここでも、+ は使わない。
このプレースホルダーは、すべての変数に対応しているので、型を気にしなくても大丈夫!便利!
なお、プレースホルダーが使えるのは、slf4jだけなので、javaではこの書き方はできない。残念!
javascriptの定義
<script type="text/javascript" src="/js/shopDetail.js"></script> <script type="text/javascript" src="/js/shopDetail.js?d=@FILE_TIMESTAMP@"></script>
javascriptを定義するときは、後者の方を書きましょう。
後者と前者で違うのは、d=@FILE_TIMESTAMP@の部分ですね( ´∀`)
これはなんのためにあるのかというと
将来、本番で動かしたとして、ユーザのブラウザはそのページを読み込むことになります。ブラウザにはキャッシュという機能があって、一度読み込んだjavascriptファイルをキャッシュしてしまいます。そして、2度目にそのjavascriptファイルを読む必要があるときは、このキャッシュが、読み込んだjavascriptをそのまま適用してくれます。
これは、動作がはやくなるということで、とても便利ですが、ひとつ厄介なのが
htmlでインポートしているjavascriptのファイル名と同じファイル名がキャッシュされていたら、キャッシュの方を使うということです。
これ、どこがだめなのかというと、開発側で、javascriptに変更を加えたとき、ユーザの方に反映されなくなっちゃいます!
そこで、@FILE_TIMESTAMP@←こいつが、プロジェクトをbuildする瞬間に、日付時間に応じて変わってくれます。これによって、インポートするファイル名が違ってくるので、変更を加えたjavascriptで対応してくれるということになりまふ(・∀・)