はじめに
現場でシンプルにコードを書いてプルリクエストを提出したら、Pythonの経験が少ししかないレビュワーから「これどんな処理なんですか?」と聞かれたので説明したことがあり、Pythonはバージョンが上がるにつれ、よりシンプルな書き方ができるようになります。
一時期、エフェクティブPythonやデザインパターンなど勉強していたので有名どころの文法をまとめました。
リスト内包表記
これです
squares = [x**2 for x in range(10)]
# 出力:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
このコードは0から9までの数の2乗のリストを作成する処理です。
このようにリスト内包表記はPythonでリストを簡単に作成する文法です
ちなみに、リスト内包表記を使わない場合は
squares = []
for x in range(10):
squares.append(x**2)
このようにリスト内包表記を使うと3行で書けるものを1行で書けます
リスト内包表記にif文を組み合わせることが可能です
0から9の数字の中から偶数の数字のリストを作成する処理をfor文とifを使って書くと
evens = []
for x in range(10):
if x % 2 == 0:
evens.append(x)
これをリスト内包表記を使うと
evens = [x for x in range(10) if x % 2 == 0]
# 出力:[0, 2, 4, 6, 8]
おわりに
レビュワーが理解しにくいようなコードを書いていたので、チームのレベルに合わせた文法(書き方)を選択するのが最善手であるように思えます。
かく言う私も他人の書いたコードの読解に苦戦していたことがあり、1年目にエレガントなコードを書く先輩Aがいらっしゃり、先輩Aは開発フェーズまで当プロジェクトまでしかいないこともあり、テストフェースになると別プロジェクトへ移ってしまい、UTで先輩Aの書いたコードからバグが見つかり、修正を任された時にコードの内容が理解できず、苦しいコードリーディングでした(軽微なバグでしたが)
また、私自身は市場価値的にジュニアレベルに相当するので、早い内にミドルレベル、ゆくゆくはシニアレベルまで行きたいです。
エレガントなコードを書いていた先輩Aはよりエレガントに書いているんでしょうか?
ちなみに、先輩A曰く最新情報をキャッチするイノベータータイプではなく、アーリーアダプタータイプのようです。