最近教わったこと

メソッドを書く上で大事なこと

メソッドの名前について

呼び出しているメソッドを見に行かなくても、何をしているのかすぐわかる名前をつけること。

public User getUserSingleResult(String id, String pass) throws SQLException {
        List<User> list = findUserByIdAndPass(id, pass);
        if(isNotSingleResult(list)) {
            throw new NonUniqueResultException();
        }
        return getListFirst(list);
    }

例えばこのメソッドは、他のたくさんのメソッドを呼び出している
これら呼び出されているメソッドは名前で何をしているか判断できるので
読み解く時わざわざそのメソッドに行かなくてもわかる。

メソッド名をわかりやすくしているのだから内容がそれに一致してないと!(当たり前だけど)

例外処理について

throw

throwは例外が発生した場合
そのあとの処理はやらない

private List<User> convertResultSetToUserList(ResultSet rs) throws SQLException {
        List<User> list = new ArrayList();
        if (rs == null) {
            throw new DataNotFoundException();
        }
        while (rs.next()) {
            list.add(new User(
                    rs.getString("id"),
                    rs.getString("name"),
                    rs.getString("pass"),
                    rs.getInt("age")
                )
            );
        }

例えばこのメソッドの場合
trycatchがないので、whileの部分の処理はせずに、このメソッドの呼び出し元まで戻る。
呼び出し元でもcatchされない時は
最終的な呼び出しもとでcatchしてあげること

ログイン処理での例外が、null~だった時

IDかパスワードが間違っている旨を伝える
どちらが間違っているか教えることもできるが、例えばIDはあっている場合、そのIDが登録されていることを外部に知られてしまうので、どちらが間違っているのか教えないようになっている

modelの基本

データベースに登録してあるカラムと
クラスのフィールドは基本的には内容を統一する

クラス

    private String id;
    private String name;
    private String pass;
    private int age;

DB

+-------+----------+--------+------+
| id    | pass     | name   | age  |
+-------+----------+--------+------+