🐷

【脱初級】一度はつまづく「癖のある」基本構文の用語【図解あり】

2024/08/26に公開

はじめに

皆さんこんにちは。
今回は基本構文の中でも少し癖のあるものをご紹介します。

「仕組みは理解できるけどいつ使うの?」「そもそもどういう仕組みなの?」と悩んでしまうものをピックアップしました。

今回の内容は次のような方にオススメです。

こんな人にオススメ

  • ロジカルシンキングはできるが、プログラミング独特の仕組みに戸惑っている
  • 分かりやすいコードの書き方を知りたい

初めて学習する方にも分かるように、丁寧に解説していきます。
プログラミングに慣れてきた方も、是非一度目を通していただけると嬉しいです。

😋 独特な仕組みも理解すれば便利になります♪

コメント

まずポイントをチェック

  • コメントは理解を助けることが目的
  • 読んで分かることはコメントにしなくてよい
  • コメントもメンテナンスの対象になる

コメントとは、コードの中に残せるメモ書きです。
コメントを残すことで、そのコードを書いた本人以外でも理解しやすくなります。

コメントは処理に影響しないので何を書いてもエラーにはなりません。しかし、コメントとして記述する内容は、現場ごとに様々なルールがあったり、一般的な良し悪しの基準があります。

😋 コメントの書き方にルールを設けてる現場もあります♪

良いコメント

良いコメントは、コードを読んでも分からないことを記述します。

🍕 例えば、そのコードを作成した背景や処理の目的、このようにコードからは読み取れないことを記述します。また、複雑な処理であれば処理の概要を記述することもあります。

悪いコメント

悪いコメントはコードを読めば分かること、つまりコードを日本語に翻訳しただけのものです。

🍕 例えば、「変数を宣言し、値を代入した」「AとBを結合した」などです。処理内容をそのまま言語化したコメントは、無駄に行数が増えてしまい読みづらくなってしまいます。

😋 1行ずつコメントを入れようとすると悪いコメントになりやすいので、コメントは処理のまとまりにつけましょう♪

コメントもメンテナンスの対象になることに注意しましょう。
コードの修正があった場合は、コメントも修正します。
コードとコメントがチグハグになっていると、混乱しやすくなります。

定数

まずポイントをチェック

  • 値を入れる箱だが、上書きはできない
  • 上書きされないので、安全に扱える

定数とは値を格納する箱です。
役割は変数と同じで、値の「名付け」と「再利用」が可能になります。

変数との違いは「値の上書きができない」ことです。
これは不便に感じるかも知れませんが、プログラミングではこちらの方が好まれます。

プログラミング言語によっては定数宣言の構文が長いので、変数を利用することもあります。
その際は可能な限り再代入を避けて、変数の値が途中で変わらないようにします。

🍕 例えば、name変数に”ジョン”を代入し、次に”トニー”を再代入します。このように変数は上書きできるので、前後の処理によってname変数の値が変わってしまいます。その結果、前後の処理を読まなければ値が分からない「理解しづらいコード」になってしまいます。

😋 可能な限り定数を使うことで、値の変化がなく理解しやすいコードになります♪

キャスト

まずポイントをチェック

  • データ型は変換可能
  • 変換にはデータ型によって制限がある
  • データ型の変換はコードを理解しづらくするので注意

キャストとは、値のデータ型を変換することです。
用意した値のデータ型が本来行いたい処理に対応していないことがあります。そういった際に値のデータ型を一時的に変換し、処理に利用します。

🍕 例えば、身長・体重を入力してもらい、BMIを計算するアプリを考えます。画面で入力した値はプログラム上では文字列型として認識されます。身長・体重は数値として処理に利用したいので、文字列型から数値型に変換します。

データ型の変換は値によって制限がありますので、注意してください。

🍕 例えば、“あいうえお”という文字列を数値型に変換することはできません。

データ型の変換はどのプログラミング言語でも容易に可能ですが、データ型が変わると値の性質が変わることになり、理解しづらいコードになりやすいので最低限の利用にしましょう。

😋 出来るだけデータ型の変換はしないほうが分かりやすいですね♪

ネスト

まずポイントをチェック

  • 入れ子の構造にすることで複雑な処理が可能
  • 処理が複雑になる分、コードが理解しづらくなるので注意

ネストとは、処理を入れ子の構造にすることを指します。
ネスト構造にすることで、複雑な処理を行うことができます。

🍕 例えば、生徒全員の中から国語の点数が90点以上の人を抽出したい場合、繰り返し処理の中に条件分岐をネストすることで実現可能です。生徒全員を繰り返し処理で順次扱い、国語の点数が90点以上か条件分岐で判断します。

😋 繰り返しと条件分岐はお互いにネストすることがよくあります♪

ネストは非常によく使う反面、ネストの階層が深くなると理解しづらいので注意してください。

🍕 例えば、繰り返し処理の中で繰り返し処理を行い、その中で条件分岐をし、さらに繰り返し処理が中に入る。と読んでいても分かりづらいように階層が深いと理解しづらくなります。処理を分解して記述するなど、分かりやすくなるよう工夫が必要です。

😋 階層が深くなってしまう場合は、他の書き方ができないか検討しましょう。♪

変数のスコープ

まずポイントをチェック

  • 変数には有効範囲がある
  • スコープは最小限になるようにする

変数のスコープとは、変数を参照可能な範囲のことです。
変数のスコープは、ネストの構造と密接に関係があります。

変数を宣言する位置(階層)によって、参照可能な範囲が変わります。
宣言した位置よりも内側であれば参照可能です。

😋 上位の階層で宣言するほど、変数のスコープは広くなります♪

スコープは広いほど危険なプログラムになりやすいので注意してください。
スコープが広いと想定外の利用をされる可能性があるため、できるだけ最小限のスコープになるようにしましょう。

null

まずポイントをチェック

  • 「何もない」ことを表すもの
  • バグの原因になりやすい値

nullとは、「何もない」ことを表す値や状態です。
変数宣言の際に適切な初期値がない場合、初期値としてnullを指定することがあります。
また、DBも製品によっては空のデータはnullとして表現されることがあります。

😋 nullは文字列でも数値でもない「何もない」という特別なデータです♪

nullは目的の値を持っていない状態なので、放置するとバグを誘発しやすい値です。
nullを使う場合は、if文でのチェックや値を更新するなど、nullのまま処理に入らないように気をつけましょう。

バグを誘発しやすいといった背景から、nullを可能な限り抑制するnull安全なプログラミング言語もあります。
null安全とは、nullの可能性がある場合は実行できないなど、nullの可能性を排除する仕組みを持ったプログラミング言語です。

おわりに

皆さん、お疲れ様でした。
ここまでご覧いただき、ありがとうございました。

今回ご紹介したものは、少し癖がありますが基本構文の内ですので、よく使うものばかりです。
よく分からないままコードを書くと、気づかないうちに分かりにくいコードになってしまいます。
ぜひ特徴を理解した上でコードを書くように意識してみてください。

😋 これからもプログラミング学習頑張りましょう♪

Discussion