英語よわよわエンジニアが英語を意識するようになって行った事まとめ
この記事はユアマイスター アドベントカレンダー 2022の 10 日目の記事です。
はじめに
私は中学・高校時、英語成績 3 だった英語よわよわエンジニアです(笑)
レビューの際に、「自動詞、他動詞を意識して...」「エンジニアで一番大切なのは英語...」というコメントを受けて、英語を意識するようになりました。
この記事は、私が英語を意識するようになって行った事をまとめたものです。
不適切な命名のデメリット
まず、プログラムは文章であり、他エンジニアの読みものでもあります。 不適切な命名だと、以下のデメリットがあるので気をつけましょう。
- 関数や変数が間違った使われ方をして、バグを生む
- 読む人の理解を妨げ、読む時間を増やす
- レビューで指摘をもらい、リリースが遅れる
主語に気をつける
日本語では省略されがちの主語ですが、英語には、必ず主語があります。関数を定義する場合も、「誰が行うものなのか?」を意識すると、定義場所が正しいものになり、読みやすく、関心の分離が守れたコードになります。
関心の分離が守れる例
成人かどうかを判断する処理の場合、UsersController
に定義すると「ユーザーコントローラーが大人です」というおかしな文章になります。
そのため Userクラス
に定義した方が、「ユーザーが大人です」という文章的にも正しく、関心の分離が守られます。
// ✖️ UsersController.php
$isAdult = $user->age >= 20;
// ○ User.php
public function isAdult()
{
return $user->age >= 20;
}
動詞に気をつける
動詞が自動詞・他動詞で文型が変わります。
英文を読む際には、動詞から文型を読み取り、文を理解するため、動詞はとても大事です。関数を定義する場合も、「この動詞は自動詞・他動詞どちらなのか?」を意識すると他者に伝わる命名になります。
また動詞によっては、自動詞・他動詞で意味が異なる単語があるので、注意しましょう。
runTo($shop) // 店に走る
run($shop) // 店を経営する
自動詞
目的語の前に前置詞をつけます。
groupBy($column) // カラム別にグループ化する
他動詞
目的語の前には前置詞をつけません。
なぜなら、他動詞自体で「目的語を(が、に)〜する」といった意味になるためです。
set($token) // トークンをセットする
英訳サイトで調べる
使用する単語が自動詞・他動詞なのか、可算名詞か不可算名詞かなど、意図しない伝え方をしないように英訳サイトで調べてから使うようになりました。
よく使う英訳サイト
単語が自動詞・他動詞かなど詳細な情報が記載されているため役立ちます。
英語の学習をする
翻訳サイトで日本語 → 英語に変換しただけでは、本来伝えたいことを伝えられません。
なぜなら、翻訳サイトでは文意を理解することができないためです。より正確に伝える為に英語の学習をしましょう。
意図しない翻訳例
① I finished my homework.
② I have finished my homework.
どちらも 「私は宿題を終えた」 という文章ですが、お母さんから 「宿題をしなさい!」と言われたとして、「ほら、宿題終わったよ!」と伝えたい時は、② が正解です。
なぜなら、 ① は過去形で 「宿題を終えた」という過去の出来事、② は現在完了形で 「宿題を終えた私がいる」という完了した事を伝える文法だからです。
さいごに
英語を意識するようになり、自分のコードが前よりも品質が高くなっていると感じています。また他者からも「レビューの指摘が良くなったね」と評価して頂けたり、思った以上に実りがありました。
これからも英語の学習を続けて行くので、そこで得た知識があれば、また共有したいと思います。