python変数名の7つの提案


前言
Quoora問答コミュニティの開発者投票統計によると、プログラマーの最大の課題は、どのように名前を付けるか(例えば、変数へのクラス、関数など)であり、一つの投票用紙はどのように名前を付けるかは、他の8つの投票結果の合計です。どのように変数に命名するかは、どうやって意味を持つようになるかがプログラマの超えられない難題になります。この文章はClearn Codeを参考にして、7つのネーミング提案を提供します。名前を取る過程であなたにいくつかの助けを与えたいです。
以下はPython 3.7文法に基づいています。
1、意味のある読み取り可能な変数名を使用します。

ymdstr = datetime.date.today().strftime("%y-%m-%d")
鬼はymdが何かを知っていますか?
はい

current_date: str = datetime.date.today().strftime("%y-%m-%d")
current_を見ましたダテ、一目で分かります。
2、同じタイプの変数は同じ語彙を使います。
この三つの関数は全部ユーザーに関する情報ですが、三つの名前が使われています。

get_user_info()
get_client_data()
get_customer_record()
もし実体が同じなら、名前を統一するべきです。

get_user_info()
get_user_data()
get_user_record()
素晴らしいのは、Pythonは顔向けのオブジェクトの言語であるため、1つのクラスでより合理的に実現され、それぞれインスタンス属性、property方法および実例的な方法で表現される。

class User:
  info : str

  @property
  def data(self) -> dict:
    # ...

  def get_record(self) -> Union[Record, None]:
    # ...
3、検索可能な名前を使う
ほとんどの時間はコードを読んでいます。コードを書くのではなく、コードを読むことができます。特に重要です。名前のない変数はプログラムを理解するのに役立ちません。読者を傷つけました。覚えてください。検索できるようにしてください。

time.sleep(86400);
What the fuck、神も86400の概念を知りません。
はい

#            ,      
SECONDS_IN_A_DAY = 60 * 60 * 24

time.sleep(SECONDS_IN_A_DAY)
はっきりしました。
4、自己記述可能な変数を使用する

address = 'One Infinite Loop, Cupertino 95014'
city_zip_code_regex = r'^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$'
matches = re.match(city_zip_code_regex, address)

save_city_zip_code(matches[1], matches[2])
matches[1]自分が誰の役割なのかを自己解釈していません。
一般

address = 'One Infinite Loop, Cupertino 95014'
city_zip_code_regex = r'^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$'
matches = re.match(city_zip_code_regex, address)

city, zip_code = matches.groups()
save_city_zip_code(city, zip_code)
matches.groups()は自動的に二つの変数に解凍されます。それぞれcity、zip_です。コード
はい

address = 'One Infinite Loop, Cupertino 95014'
city_zip_code_regex = r'^[^,\\]+[,\\\s]+(?P<city>.+?)\s*(?P<zip_code>\d{5})?$'
matches = re.match(city_zip_code_regex, address)

save_city_zip_code(matches['city'], matches['zip_code'])
5、変数の意味を読者に推測させないでください。明快さは難解さより優れています。

seq = ('Austin', 'New York', 'San Francisco')

for item in seq:
  do_stuff()
  do_some_other_stuff()
  # ...
  # Wait, what's `item` for again?
  dispatch(item)
seqとは何ですか?シーケンス?どんなシーケンスですか?知っている人はいません。続けて見るしかないです。
はい

locations = ('Austin', 'New York', 'San Francisco')

for location in locations:
  do_stuff()
  do_some_other_stuff()
  # ...
  dispatch(location)
locationsで表しています。これはいくつかの地域からなるグループです。
6、無意味な文脈を追加しない
クラス名はもうあなたに何を教えてもいいですか?変数名は繰り返し説明しないでください。

class Car:
  car_make: str
  car_model: str
  car_color: str
蛇に足を添うような気がする。必要がなければ、実体を増やすな。
はい

class Car:
  make: str
  model: str
  color: str
7、ショート演算や条件演算の代わりにデフォルトのパラメータを使う

def create_micro_brewery(name):
  name = "Hipster Brew Co." if name is None else name
  slug = hashlib.sha1(name.encode()).hexdigest()
  # etc.
はい

def create_micro_brewery(name: str = "Hipster Brew Co."):
  slug = hashlib.sha1(name.encode()).hexdigest()
  # etc.
これは理解できるでしょう。関数の中でパラメータのない変数を処理する必要があるのに、なぜ定義の時に指定しないですか?
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。