SlideShare a Scribd company logo
1 of 27
Download to read offline
よい名前を付けまし
          ょう
                            リーダブルなんたらとか
                        よしだあつし(@yalab)

よい名前を付けましょう - リーダブルなんたらとか          Powered by Rabbit 2.0.5
自己紹介




よい名前を付けましょう - リーダブルなんたらとか          Powered by Rabbit 2.0.5
自己紹介



     省略




よい名前を付けましょう - リーダブルなんたらとか          Powered by Rabbit 2.0.5
なぜ名前重要か?




よい名前を付けましょう - リーダブルなんたらとか   Powered by Rabbit 2.0.5
なぜ名前重要か?



     http://jp.rubyist.net/
     magazine/?0001-Hotlinks




よい名前を付けましょう - リーダブルなんたらとか      Powered by Rabbit 2.0.5
リーダブルコード




よい名前を付けましょう - リーダブルなんたらとか     Powered by Rabbit 2.0.5
第2章 名前に情報を詰め込む

    ✓ 2.1 明確な単語を選ぶ
    ✓ 2.2 tmp や retval などの汎用的
      な名前を避ける
    ✓ 2.3 抽象的な名前よりも具体的
      な名前を使う


よい名前を付けましょう - リーダブルなんたらとか   Powered by Rabbit 2.0.5
第2章 名前に情報を詰め込む

    ✓ 2.4 名前に情報を追加する
    ✓ 2.5 名前の長さを決める
    ✓ 2.6 名前のフォーマットで情報を
      伝える
    ✓ 2.7 まとめ

よい名前を付けましょう - リーダブルなんたらとか   Powered by Rabbit 2.0.5
第3章 誤解されない名前
    ✓ 3.1 例: filter()
    ✓ 3.2 例: Clip(text, length)
    ✓ 3.3 限界値を含めるときは min
      と max を使う
    ✓ 3.4 範囲を指定するときは first
      と last を使う

よい名前を付けましょう - リーダブルなんたらとか         Powered by Rabbit 2.0.5
第3章 誤解されない名前
    ✓ 3.5 包含/排他的範囲には
      begin と end を使う
    ✓ 3.6 ブール値の名前
    ✓ 3.7 ユーザーの期待に合わせる
    ✓ 3.8 例: 複数の名前を検討する
    ✓ 3.9 まとめ
よい名前を付けましょう - リーダブルなんたらとか   Powered by Rabbit 2.0.5
注意

    ✓ ここから先は必ずしも正しいもの
      ではありません。
    ✓ こうやったほうがいいんじゃね?と
      いう僕からの提案だと考えてくだ
      さい。


よい名前を付けましょう - リーダブルなんたらとか        Powered by Rabbit 2.0.5
注意


    ✓ いろいろ聞きますので答えてくれ
      るとうれしいです。
    ✓ rails の話だったりそうじゃなかっ
      たり様々です。


よい名前を付けましょう - リーダブルなんたらとか        Powered by Rabbit 2.0.5
getter と setter は無駄
        class User{
          function getAge(){
            return $this->age;
          }

            function setAge($age){
              return $this->age = $age;
            }
        }
よい名前を付けましょう - リーダブルなんたらとか           Powered by Rabbit 2.0.5
getter と setter は無駄


        class User
          attr_accessor :age
        end

        user = new User(name: 'yalab')
        user.age = 4


よい名前を付けましょう - リーダブルなんたらとか          Powered by Rabbit 2.0.5
 
    ✓ getter だけとか setter だけなら
      まだよいかも…
    ✓ jQuery の引数付き呼び出しは
      setter で引数なし呼び出しは
      getter はわりとかっこいい
    ✓ ruby にはそもそも
      attr_accessor なんかがあるので
      それを使おう
よい名前を付けましょう - リーダブルなんたらとか       Powered by Rabbit 2.0.5
具体的過ぎる名前は変数には
       向かない


        //一週間立ったら削除する
        $sevenDaysAgo = 7 * 3600 * 24;

        if($lastAccess + $sevenDaysAgo < time()){
          ...
        }



よい名前を付けましょう - リーダブルなんたらとか                    Powered by Rabbit 2.0.5
具体的過ぎる名前は変数には
       向かない


       limit_date = 7 * 3600 * 24
       if last_access + limit_date < Time.now
       end



よい名前を付けましょう - リーダブルなんたらとか                Powered by Rabbit 2.0.5
 


    ✓ ハードコーディングは変更に弱い
    ✓ さきほどの例だと $limitDate と
      か $expireDate?



よい名前を付けましょう - リーダブルなんたらとか       Powered by Rabbit 2.0.5
過程はさておき最終的に得られ
   るものの名前にする

        class User
         例えば誕生日から年齢を計算する場合
         def calc_age
         end

         よりは
         def age
         end
        end

よい名前を付けましょう - リーダブルなんたらとか   Powered by Rabbit 2.0.5
 

    ✓ これは賛否両論
    ✓ リーダブルコード的にはおそらくア
      ウト
    ✓ 万葉の大場さん的には推奨
    ✓ よしだも推奨

よい名前を付けましょう - リーダブルなんたらとか       Powered by Rabbit 2.0.5
中間テーブルのネーミングをさ
     ぼってはいけない


       x users - users_groups - groups
       o users - memberships - groups

       x people - people_items - items
       o people - orders       - items


よい名前を付けましょう - リーダブルなんたらとか         Powered by Rabbit 2.0.5
 

    ✓ 両方の名前でやると「中間テーブ
      ルである」ということはわかるけど
      それしかわからない
    ✓ 適切な名前がついてると例えばコ
      メントでそれが何であったかなど
      を残さなくてもよくなる

よい名前を付けましょう - リーダブルなんたらとか       Powered by Rabbit 2.0.5
class 名は名詞、メソッド名は動
          詞か名詞
                        class Order
                          def items
                          end

                            def sum
                              pluck(:price).inject(&:+)
                            end

                            def calc_tax
                              @tax = 10 * sum / 100
                            end

                          def total_all
                            sum + @tax
                          end
                        end

よい名前を付けましょう - リーダブルなんたらとか                                 Powered by Rabbit 2.0.5
 
    ✓ プログラミングの対象はだいたい
      値なのでだいたい名詞
    ✓ 動詞を使う時はオブジェクトの内
      部の値を変える時
    ✓ 何かのトリガーになるものも動詞
    ✓ 動名詞は微妙

よい名前を付けましょう - リーダブルなんたらとか       Powered by Rabbit 2.0.5
クラス名とメソッド名での名前の
     重複を避ける
                            class Plan
                              def monthly_plan
                              end
                            end

                            ではなく

                            class Plan
                              def monthly
                              end
                            end

よい名前を付けましょう - リーダブルなんたらとか                        Powered by Rabbit 2.0.5
閑話休題




よい名前を付けましょう - リーダブルなんたらとか          Powered by Rabbit 2.0.5
ここからはゲームをしましょう

    ✓ フレームインフレームアウト
    ✓ OSSなコードのリファクタリング
    ✓ 何かしらを設計してみる
    ✓ 名前をつけてやる


よい名前を付けましょう - リーダブルなんたらとか   Powered by Rabbit 2.0.5

More Related Content

Viewers also liked

Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースよしだ あつし
 
私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development について私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development についてよしだ あつし
 
まじょのおしごとの裏側
まじょのおしごとの裏側まじょのおしごとの裏側
まじょのおしごとの裏側よしだ あつし
 
Twitterでネットストーカーをしよう
TwitterでネットストーカーをしようTwitterでネットストーカーをしよう
Twitterでネットストーカーをしようよしだ あつし
 
TOEICテスト学習コース~ETS公式問題集収録~
TOEICテスト学習コース~ETS公式問題集収録~TOEICテスト学習コース~ETS公式問題集収録~
TOEICテスト学習コース~ETS公式問題集収録~Uchida Human Development
 
15分でできるSQLインジェクション
15分でできるSQLインジェクション15分でできるSQLインジェクション
15分でできるSQLインジェクションよしだ あつし
 
低レイヤから見たrubyプログラミング
低レイヤから見たrubyプログラミング低レイヤから見たrubyプログラミング
低レイヤから見たrubyプログラミングよしだ あつし
 
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
 GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ  GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ Hiroyuki Tanaka
 

Viewers also liked (13)

Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
 
私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development について私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development について
 
まじょのおしごとの裏側
まじょのおしごとの裏側まじょのおしごとの裏側
まじょのおしごとの裏側
 
Twitterでネットストーカーをしよう
TwitterでネットストーカーをしようTwitterでネットストーカーをしよう
Twitterでネットストーカーをしよう
 
Railsの今昔
Railsの今昔Railsの今昔
Railsの今昔
 
TOEICテスト学習コース~ETS公式問題集収録~
TOEICテスト学習コース~ETS公式問題集収録~TOEICテスト学習コース~ETS公式問題集収録~
TOEICテスト学習コース~ETS公式問題集収録~
 
15分でできるSQLインジェクション
15分でできるSQLインジェクション15分でできるSQLインジェクション
15分でできるSQLインジェクション
 
Dockerプレゼン
DockerプレゼンDockerプレゼン
Dockerプレゼン
 
Rubyコードの最適化
Rubyコードの最適化Rubyコードの最適化
Rubyコードの最適化
 
低レイヤから見たrubyプログラミング
低レイヤから見たrubyプログラミング低レイヤから見たrubyプログラミング
低レイヤから見たrubyプログラミング
 
Vue.js ハンズオン資料
Vue.js ハンズオン資料Vue.js ハンズオン資料
Vue.js ハンズオン資料
 
Gitの使い方あれこれ
Gitの使い方あれこれGitの使い方あれこれ
Gitの使い方あれこれ
 
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
 GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ  GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
GCS2013 リーンソフトウェア開発から見るゲーム開発7つのムダ
 

Similar to よい名前を付けましょう リーダブルなんたらとか

名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こうKouhei Sutou
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
Zend Db Table拡張説明資料
Zend Db Table拡張説明資料Zend Db Table拡張説明資料
Zend Db Table拡張説明資料co-hey japan
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタートShumpei Shiraishi
 
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくするKouhei Sutou
 
演算子オーバーライドをDSLに活用する
演算子オーバーライドをDSLに活用する演算子オーバーライドをDSLに活用する
演算子オーバーライドをDSLに活用するkwatch
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)Masahiro Hayashi
 
入れ子構造を分解する
入れ子構造を分解する入れ子構造を分解する
入れ子構造を分解するazuma satoshi
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~Akabane Hiroyuki
 

Similar to よい名前を付けましょう リーダブルなんたらとか (11)

名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
Zend Db Table拡張説明資料
Zend Db Table拡張説明資料Zend Db Table拡張説明資料
Zend Db Table拡張説明資料
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
 
Perl勉強会#2資料
Perl勉強会#2資料Perl勉強会#2資料
Perl勉強会#2資料
 
演算子オーバーライドをDSLに活用する
演算子オーバーライドをDSLに活用する演算子オーバーライドをDSLに活用する
演算子オーバーライドをDSLに活用する
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
Aizu lt tokyo_luxion
Aizu lt tokyo_luxionAizu lt tokyo_luxion
Aizu lt tokyo_luxion
 
入れ子構造を分解する
入れ子構造を分解する入れ子構造を分解する
入れ子構造を分解する
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
 

よい名前を付けましょう リーダブルなんたらとか

  • 1. よい名前を付けまし ょう リーダブルなんたらとか よしだあつし(@yalab) よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 3. 自己紹介 省略 よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 5. なぜ名前重要か? http://jp.rubyist.net/ magazine/?0001-Hotlinks よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 7. 第2章 名前に情報を詰め込む ✓ 2.1 明確な単語を選ぶ ✓ 2.2 tmp や retval などの汎用的 な名前を避ける ✓ 2.3 抽象的な名前よりも具体的 な名前を使う よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 8. 第2章 名前に情報を詰め込む ✓ 2.4 名前に情報を追加する ✓ 2.5 名前の長さを決める ✓ 2.6 名前のフォーマットで情報を 伝える ✓ 2.7 まとめ よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 9. 第3章 誤解されない名前 ✓ 3.1 例: filter() ✓ 3.2 例: Clip(text, length) ✓ 3.3 限界値を含めるときは min と max を使う ✓ 3.4 範囲を指定するときは first と last を使う よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 10. 第3章 誤解されない名前 ✓ 3.5 包含/排他的範囲には begin と end を使う ✓ 3.6 ブール値の名前 ✓ 3.7 ユーザーの期待に合わせる ✓ 3.8 例: 複数の名前を検討する ✓ 3.9 まとめ よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 11. 注意 ✓ ここから先は必ずしも正しいもの ではありません。 ✓ こうやったほうがいいんじゃね?と いう僕からの提案だと考えてくだ さい。 よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 12. 注意 ✓ いろいろ聞きますので答えてくれ るとうれしいです。 ✓ rails の話だったりそうじゃなかっ たり様々です。 よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 13. getter と setter は無駄 class User{ function getAge(){ return $this->age; } function setAge($age){ return $this->age = $age; } } よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 14. getter と setter は無駄 class User attr_accessor :age end user = new User(name: 'yalab') user.age = 4 よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 15.   ✓ getter だけとか setter だけなら まだよいかも… ✓ jQuery の引数付き呼び出しは setter で引数なし呼び出しは getter はわりとかっこいい ✓ ruby にはそもそも attr_accessor なんかがあるので それを使おう よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 16. 具体的過ぎる名前は変数には 向かない //一週間立ったら削除する $sevenDaysAgo = 7 * 3600 * 24; if($lastAccess + $sevenDaysAgo < time()){ ... } よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 17. 具体的過ぎる名前は変数には 向かない limit_date = 7 * 3600 * 24 if last_access + limit_date < Time.now end よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 18.   ✓ ハードコーディングは変更に弱い ✓ さきほどの例だと $limitDate と か $expireDate? よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 19. 過程はさておき最終的に得られ るものの名前にする class User 例えば誕生日から年齢を計算する場合 def calc_age end よりは def age end end よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 20.   ✓ これは賛否両論 ✓ リーダブルコード的にはおそらくア ウト ✓ 万葉の大場さん的には推奨 ✓ よしだも推奨 よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 21. 中間テーブルのネーミングをさ ぼってはいけない x users - users_groups - groups o users - memberships - groups x people - people_items - items o people - orders - items よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 22.   ✓ 両方の名前でやると「中間テーブ ルである」ということはわかるけど それしかわからない ✓ 適切な名前がついてると例えばコ メントでそれが何であったかなど を残さなくてもよくなる よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 23. class 名は名詞、メソッド名は動 詞か名詞 class Order def items end def sum pluck(:price).inject(&:+) end def calc_tax @tax = 10 * sum / 100 end def total_all sum + @tax end end よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 24.   ✓ プログラミングの対象はだいたい 値なのでだいたい名詞 ✓ 動詞を使う時はオブジェクトの内 部の値を変える時 ✓ 何かのトリガーになるものも動詞 ✓ 動名詞は微妙 よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 25. クラス名とメソッド名での名前の 重複を避ける class Plan def monthly_plan end end ではなく class Plan def monthly end end よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5
  • 27. ここからはゲームをしましょう ✓ フレームインフレームアウト ✓ OSSなコードのリファクタリング ✓ 何かしらを設計してみる ✓ 名前をつけてやる よい名前を付けましょう - リーダブルなんたらとか Powered by Rabbit 2.0.5