LoginSignup
6
7

More than 5 years have passed since last update.

いまさらリーダブルコードまとめ (第2章)

Last updated at Posted at 2016-03-07

はじめに

チーム内リーダブルコード輪読会の第2章。
第1章はこちら

第2章 名前に情報を詰め込む

どんな内容?

  • クラス、メソッド、変数の名前をつけるときは、その名前から機能・格納されている情報が分かるような名前にしよう
  • 一時変数や短いスコープ内でしか使われない変数であれば、tmpnといった短くて抽象的な名前でもいいんじゃない?

読んだ感想

コードレビューで自分がよく指摘するのが、この"名付け"の部分。
もっとちゃんと名前つけて欲しいっていつも思ってる。
(自分は自分で、レビュワーから「変数名長すぎ」って突っ込まれたりして直すこともあるけどw)

文中ではsendfindなどのシソーラスが例示されていて「適宜適切な単語を選ぼう」ってなってるけど英語スキルがあまりないチームでは、シソーラス表見てどれが正しいか悩んだ挙句に適切なものを選んでも、他の人にその単語のニュアンスが通じないことがある。
なので、
「こういうときはsendよりもdistributeのが適切」
とかいったことを共通認識として広めていく必要があるなーと。

例を挙げて議論してみよう

適切な単語を選ぶ

  • どういうメソッド名が、より適切?
1-1
// 名前がtargetNameと一致するユーザを取得する
// *命名についての話なので、このメソッドの妥当性については無視してください
User getUser(List<User> users, String targetName) {
  for(User user : users) {
    if (user.getName().equals(targetName)) {
      return user;
    }   
  }
  return null;
}

List<User> getUsers(List<User> users, String targetName) {
  List<User> matchedUsers = new ArrayList<>;
  for(User user : users) {
    if (user.getName().equals(targetName)) {
      matchedUsers.add(user);
    }   
  }
  return matchedUsers;
}
  • -> getよりfilterのが適切?
  • -> 名前を元に取得するんだったら...fomNameとかつけたほうがいい?
  • -> getXXXUserとかgetYYYUserのように、より具体的な属性をつけたほうがいい?

名前の長さを決める

何をどこまで省略する?

  • 変数名長すぎ?
2-1
void someFunc(AccountInfo accountInfo) {
  String userNameOfAccountInfo = accountInfo.getUser().getName();
}
  • メソッド名冗長すぎ?
2-2
Class SomeConverter {
  public static String convertIntToString(int num) {
    ...
  }
}
  • Converterクラスのconvertメソッドってどうなの?
  • 引数をintで取ってるのに、convertIntってIntを明示する意味はあるのか?
6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7