コーディング(ローカル)ルール
コードを書く際のルールについてちょっとだけ書いておきます。
自分の中での統一規格として書いておく、またプロジェクト毎に柔軟に対応するのは必須!
・文字数について
横の文字数は100字程度に収める
eclipseでの設定
ウィンドウ→設定→一般→エディター→テキスト・エディター
の設定で"印刷マージンの表示"にチェックを入れて
"印刷マージン列"は100に設定する
・パッケージについて
ドメイン名を逆から書いていくのが基本
・変数名について
変数名はその変数がどの場面で使用されるのかを考慮して英語で記述すること。
型名の頭文字を小文字にして変数名の先頭に付けて変数を構成する。
//
while文なんかを書くときにループカウントを定義する
int iCount = 0;
// コンボボックスの中身のリスト
String[] sComboBoxValueList = null;
// ツリー表示用のPanelクラスのインスタンスを保持するオブジェクト
Panel pTreePanel = new Panel();
クラス定数は全部大文字で単語を"_"アンダーバーで表示する。
private static final String CONST_VALUES = "const";
・メソッド名について
接頭文字は小文字で記述する処理の内容を端的に表すものを英単語を組み合わせて説明する
// getter, setterは別次元で考える
スコープは出来るだけ狭い物を使用するように心がける
// テーブルの内容をリストに読み込む
private ArrayList getTableValue();
// パスワード照会
protected boolean isAuthPassword( String username, String password );
// 設定ファイルの名前をカテゴリーを指定して取得する
public static String getSettingFileName( String category );
・コメントについて
classのjavadoc
/**
* なんとかをどうにかするクラス<br>
*
* @author xxxxxxxxxx
* @throws *****Exception (←Exceptionがあれば)
*/
コンストラクタのjavadoc
/**
* ***のコンストラクタ<br>
*
* @author xxxxxxxxxx
* @param args(←必要に応じて)
* @throws *****Exception (←Exceptionがあれば)
*/
methodのjavadoc
/**
* なんとかを処理するメソッド<br>
*
* @param args(←必要に応じて)
* @throws *****Exception (←Exceptionがあれば)
* @return **
*/
/** public定義した変数or変数にも解説を記述する */
// プライベートな変数or定数は"//"で始まる一行コメントを記述
// 処理分岐などの、処理内で重要だと思う部分にもコメントを記述する
/* C言語コメントでも可(ただし、javadocには表示されないので注意) */
サンプル集
Struts Best Practice
1. Use intermediate Action class for common operations
共通の処理(認証の処理とか)を実装するために、abstractなクラスを使う。
2. Use DispatchAction to group related actions into a single
class
DispatchActionを使って関係性があるActionをまとめる。
例えばショッピングカートの実装での、商品追加・削除・修正とか。
(でもそしたらabstractなActionは無理じゃんねぇ……。)
3. Handle duplicate form submission
二重送信を避けるため、saveToken() と isTokenValid() を使え。
4. Use Application Modules for parallel development
並行開発とかで問題が発生しそうであれば、モジュールを(struts-configを)分ける。
5. Use single ActionForm for similar forms
似てるActionFormは複数つくらない。
例えば、顧客情報表示画面と顧客情報編集画面は、同じActionFormを使う。
6. Use global-forwards to avoid redundant forwards
Actionによく出るforwardはglobal-forwardsに定義する。
例えばセッションタイムアウトはglobal-forwardsに書く。
7. Use Struts exception handler for generic exceptions
例外発生時に何かしたい場合にはExceptionHandlerを継承してHandlerをつくる
8. Remove ActionForm from session
セッションに入れて、不必要になった場合には消せってことかな?
9. Use Business Delegate
Actionにごちゃごちゃ実装するな
(プレゼンテーションレイヤーなので)
10. Use ForwardAction for simple JSPs
何もしないActionを使いたい場合はForwardActionを使う
(知らずに自分で書いてた……。)
11. Avoid using instance/static variable in Action
class
Actionにはインスタンス変数、staticな変数を書かない
12. ActionForms are not Model
reset() とか validate()とかにごちゃごちゃ実装しない
(プレゼンテーションレイヤーなので)
13. Use html:messages instead of html:errors
html:errors じゃなくてhtml:messages を使う
14. Use Tools
Easy Struts とかStruts Console とかStruts Builder とか、便利なものを使う。
15. Use StrutsTestCase for unit testing
テストにはStrutsTestCase を使う
javaでのソケット通信について
電文処理はByteBufferを使用するのが良い。
Stringなんかも問題なく遅れるっぽい
サーバソケット
ServerSocketChannelを使用
クライアントソケット
SocketChannelを使用
そんで、チャンネルを切り替えて読み書き、待ちうけを選択する。
チャンネルを変えないと他のチャンネルの情報が取得できない
いろいろ試した結果、上記3つの java.nioパッケージを使用するのがスマートっぽい