銀河鉄道

Local Variable|ローカル変数の役割と使い方

サムネイル
ローカル変数役割
ローカル変数の
役割を理解する

変数に役割があるの?

私は、変数が果たす役割を、その名前を通して伝えます
I communicate the role a variable plays through its name.

imprementation Patterns

そもそも、ローカル変数とは何か

ローカル変数とは

ローカル変数とは、「宣言場所からスコープの終わりまで」のみアクセスするもの
Local variables are only accessible from their point of declaration to the end of their scope. 

宣言した場所が、スタート地点

狭い範囲で、自分の役割を果たす

ローカル変数の役割|common roles for local variables

むやみに使わずに、次のような役割をおさえておく

  1. Collector|コレクター
    • あとで使う情報の収集(collects information for later use
    • たとえば関数の戻り値には、”result” や “results”などの変数を使う
  2. Count|カウント
    • 数の集計
  3. Reuse|再利用
    • 何度も使う、同じ値
  4. Element|要素
    • ループの中での、ループされている要素
      • 何をループしているかを理解しやすくする
      • 特にネストしたループには、変数名で区別することが推奨されている
  5. Explaining|説明
    • 式の一部
      • x + y など
      • 複雑な式の場合、変数名を工夫すると理解しやすくなる
        if you have a complicated expression, assigning bits of the expression to local variables can help readers navigate the complexity

あとで使うか、または理解しやすくなってるか

最後の Explaining は、特に意識してみよう

説明変数は、しばしばヘルパーメソッドに向けた一歩です。
Explaining locals are often a step towards helper methods

imprementation Patterns

説明ローカル変数|The explaining local variables

計算上は必要なくても、説明変数は、長くて複雑な式を説明するのに役立つ。
While not computationally necessary, the explaining local variables help what would otherwise be a long, complicated expression. 

「長くて複雑な式」を説明

ヘルパー・メソッドとも呼ぶ

ヘルパー・メソッド|helper methods

長く複雑な式をわかりやすくするメソッド

ヘルパー・メソッドになっているかチェックする

  • メソッドを単純化する
    • simplify the method
  • 共通の式の重複を排除する
    • eliminate the duplication of common expressions
  • 単純になったか
  • 同じ式を何度も書かなくてもすむようになったか

前よりも複雑になってるなら変数を考え直したほうがいい

「メソッド(関数)として使えるか」もチェック

  • 「式」が「メソッドの本体」となる
    • the expression becomes the body of the method
  • 「変数名」が「メソッド名」を表現する
    • the name of the local variable suggests a name for the method

変数の名前そのものが、メソッドを表現する

やっぱり名前が大事

役割を表現する変数名|Role-Suggesting Name

それ自体の役割が伝わるものが、名前

  • 「10%」という具体的な数値に、
  • 「税率」という抽象的な名前をつける
    • →「税率を扱っている」ことが読者に伝わる

数値の意味を、抽象的な名前で読者に伝える

長さ v.s. 短さ

  • 役割を完全に伝えるために、長い名前にしたい
    • I want to communicate my intent fully through my names, which often suggests long names.
  • 短くてシンプルな名前にしたい
    • I’d like the names to be short to simplify code formatting. 

役割がきちんと伝わる長さでの、もっとも短いものがいい

そのために優先することがある

読みやすさ優先にする

  • 入力のしやすさより、読みやすさ優先
  • 伝わる範囲で、できるかぎり短くて明瞭なものを選ぶ
  • 誰にも伝わらないような省略形にはしない
  • スコープや型などは文脈が伝えるものであり、必ずしも名前で表現する必要はない

迷ったら、読みやすいほう

そもそもの役割を理解する

役割を表現するためには、その式自体の役割を知る

  • この計算の目的は何?
  • このオブジェクトはどう使われる?
  • この変数の範囲と寿命はどのくらい?

そもそも、この式はなぜ必要なんだっけ

役割が大きすぎてる可能性もある

メソッド自体を短くする

名前が思いつかない場合は、メソッド・モジュール・ロジックが大きすぎることを疑ってみる

変数名とコミュニケーションしてみると、たいていは短くて明瞭な名前になる
I try to communicate with my variable names, generally leading to short, clear names. 

imprementation Patterns

変数と対話するような感覚

ちなみに変数は、宣言する場所も大事

ローカル変数の宣言

使用直前に宣言する

情報は狭いほうがいい

ローカル変数は使用直前かつ最も内側のスコープで宣言されるべき
Declare local variables just before they are used and in the innermost possible scope. 

  • 情報の広がりは、できるだけ狭くするべき
    • information should spread as little as possible

食べる直前に「いただきます」と言うようなもの

名前は何度も読まれるもの.書かれるだけではない.
Since variables are read many times for each time they are written

imprementation Patterns

コードとは、「読みもの」である

役割を
読者に伝えるための
抽象化

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧