概要
プログラミングを始めたばかりで中々覚えることができない。
色んな言語を触りたいけど一から勉強するのは疲れる。
とりあえず実装できたけど正直どう動いているのか理解していない。
過去この様なことを経験して悩んでいましたが、「日本語として理解」したら思いのほか簡単に解決できたのでこの記事ではTypeScriptの記述でどういったことなのかを説明します。※TypeScript限定ではないです。
今後のプログラミングの勉強や新しい言語取得への手助けになればと思います。
この記事で取り上げるもの
- 変数
- 条件分岐
- ループ
プログラミング言語の日本語化
変数
TypeScriptやjavascriptで言えば "let name"、"const name"、"var name"。
phpは "$name"、Pythonは "name" といった感じで変数を定義します。
変数名からどいったものかはある程度理解できますが、経験からすると変数の意味をちゃんと理解していないとバグを生み出すことが多々あります。
今回のパターンを日本語として理解するとなると「name ⇒ 名前」となりますが、これはコーディングしている内容がシンプルな場合は問題が発生する可能性は低そうですが私はなるべく避けるようにしています。
例えば今回は 氏名という変数を定義したい場合は「fullName」や「firstName」、「lastName」にするなどです。
これは可読性の問題な気がしますが、こういった形で定義しておけばどんなに長い変数名であっても 氏名という2文字の日本語で読み替えることができます。
条件分岐
ほとんどの言語に登場してくるif ~ですが、条件が複雑にであればあるほど最適化やコーディングが大変でミスもしやすいです。
if (A === B ) {
// 処理A
}
else if (C === D) {
// 処理A
}
else {
// 処理B
}
この条件文をそのまま日本語にすると
「AとBが一致したら処理Aを実行して、そうでない場合はCとDが一致するかを判定し、一致した場合は処理Aを実行して、どれにも該当しない場合は処理Bを実行する。」
となります。日本語としてちょっと読みづらいですね。
これをより分かりやすい形にすると
「AとBが一致するかCとDが一致した場合は処理Aを実行し、そうでない場合は処理Bを実行する」
とした方がまとまりがあって読みやすくなりました。
そしてこの日本語をコードに変換すると
if (A === B || C === D) {
// 処理A
}
else {
// 処理B
}
とすることができ余計な条件式を省略することができました。
コード⇒日本語にすることで整理することができました。
ループ
ループは「繰り返し処理を実行する」場合等に使用されるます。
しかし、forや whileといった様に同じ繰り返す処理だとしてやりたいことが違い記述も変わってきます。
例えば
for (const a of A)
といった場合は日本語に表すと「Aの中身に対して1要素ずつ処理を実行する」となります。
whileの場合は
let count = 0;
while (count < 3)
といった記述となり、日本語に直すと「countが3未満であれば繰り返し処理を実行する」 となります。
同じ繰り返す処理だとしても目的やによって記述も変わってきます。
結果的にはどちらの記述でも実現は可能ですが、可動性や意図しない動きをした時のデバッグも楽になります。
まとめ
私はプログラミングの勉強を始めたとき記述ばかり覚えることに必死だったのですが、勉強するときまず最初に考えることは 何をしたいかを明確にということだと思っています。
初歩的なことではありますが、いきなり「条件分岐を覚えるぞ!」となってググっても"条件分岐とは~"や"こういった形で記述します"という情報ばかり…
覚えなくていけないことに変わりはないのですが、いざ業務や自作アプリを作ろうとしたときに記事に書いてある内容しか覚えておらず結局のところどういった処理をしていたのか理解できていなかったということがあります。(少なくとも私はそうでした…)
なので 日本語で何をしたいかを明確にした状態で「この処理をするには~」といったことをググったりChatAIに投げたりすると言語への理解が深まり、綺麗コードを書くことができるようになると思います。
私は初めはどうしたいかをメモに起こしてから色々調べたりしてました。