コーディング規約と構造化
低頻約 32 分7 用語過去問 4 題
この単元の目標
- 行頭の空白でまとまりを見せる 字下げ と、入れ子の段数を表す ネストの深さ を区別できる。
- 名前の付け方を決める 命名規則 と、部品に分ける モジュール分割 が、直しやすさにどう効くかを説明できる。
- メインルーチン と サブルーチン の、呼び出す側と呼び出される側の関係を説明できる。
用語総表(7 語)
用語
字下げ は、行の先頭に空白を入れて、処理のまとまりと入れ子の段を見た目で分かるようにする書き方である。
条件分岐や繰り返しの中に入る行を一段右へずらし、同じ段の行は先頭の位置をそろえる。多くの言語では字下げを変えても処理の結果は変わらないが、Python のように字下げでまとまりの範囲を決める言語もある。どちらの場合も、まとまりの切れ目が一目で分かり、読み違いが減る。
たとえ箇条書きで大項目の下に小項目を少し右へずらして書くと、どの小項目がどの大項目に属するかがすぐ分かるのと同じ。
覚え方「字を下げる」と書くとおり、行頭の文字を右へ押し下げる操作がそのまま名前になっている。
インデンテーション (indentation) は字下げの英語名で、指す内容は字下げと同じである。
行頭に入れる空白そのもの、またはその幅を インデント と呼び、空白文字やタブで一段分を作る。一段の幅をプログラム全体でそろえないと、まとまりの境目がかえって読み取りにくくなる。
覚え方英語の indent は、紙の端から文字が内側へ引っ込んだ「くぼみ」を表す。
出題のポイント
- 混同注意インデンテーション と 字下げ は同じ整形を英語と日本語で呼んだもので、別々の手法ではない。
ネストの深さ は、条件分岐や繰り返しの中にさらに条件分岐や繰り返しが入る 入れ子 (ネスト) が、何段重なっているかを表す。
例えば、繰り返しの中に条件分岐があり、その中にもう一つ条件分岐があれば、入れ子は 3 段になる。段が深いほど、ある行が実行される条件を確かめるのに多くの段をさかのぼる必要があり、読み違いや修正の誤りが起きやすい。深くなった部分は別の処理として切り出すなどして、段を浅く保つ工夫をする。
たとえ箱の中に箱、その中にまた箱を入れた入れ子の箱では、奥の箱ほど取り出すまでに開ける手間が増える。
覚え方nest は英語で「鳥の巣」。巣に卵が収まるように、処理の中に処理が収まる。
出題のポイント
- 混同注意ネストの深さ は入れ子の段数という構造の性質で、字下げ はその段を見た目に表す手段なので、一段の幅を一律に広げても深さは変わらない。
命名規則 は、変数や関数などに付ける名前の付け方を、あらかじめ決めておく取り決めである。
例えば、役割の分かる英単語を使う、単語の区切りを大文字や下線で示す、定数はすべて大文字にする、といった決まりを作る。命名規則は字下げの幅などの決まりと合わせて、プログラムの書き方をそろえる コーディング規約 の一部として定めることが多い。名前の付け方が統一されていると、書いた本人以外も名前から役割を推測できる。
たとえ書類棚のファイル名を「年月_取引先_内容」の順に統一しておくと、誰が探しても中身の見当がつくのと同じ。
出題のポイント
- 出題命名規則 などで書き方を統一する主なねらいは、後から読んで直す作業をしやすくすること、つまり 保守性 を高めることである。
この用語の過去問 1 題 命名規則 →
モジュール分割 は、大きなプログラムを機能のまとまりごとの部品 (モジュール) に分けて組み立てる手法である。
1 つのモジュールには 1 つの役割を持たせ、モジュール同士は受け渡す情報を決めて組み合わせる。修正が必要になっても影響する範囲がそのモジュールの中に収まりやすく、作った部品を別のプログラムで使い回すこともできる。なお、モジュールという語は、ソースコードを翻訳・結合する段階で作られるプログラムの単位の呼び名にも使われる。
たとえ家具を板・脚・引き出しの部品で組み立てておくと、壊れた引き出しだけを取り替えられるのに似ている。
覚え方module は「規格をそろえた交換できる単位」を表し、宇宙船の居住モジュールのように差し替え・追加ができる部品をいう。
出題のポイント
- 出題翻訳したプログラムを結合し、コンピュータがそのまま実行できる形の機械語にしたものを ロードモジュール と呼ぶ。
この用語の過去問 2 題 モジュール分割 →
メインルーチン は、プログラムを実行したときに最初に動き、処理全体の流れを取りまとめる中心の処理である。
細かな個別の処理は自分で書かずに下位の処理を呼び出して任せ、処理が戻ってきたら次の手順へ進む。そのため、メインルーチンを読めば、プログラム全体が何をどの順で行うかをつかめる。
たとえ工事の現場監督が作業の順番を決め、各工程はそれぞれの職人に頼んで、終わった報告を受けてから次の工程に進めるのに似ている。
サブルーチン は、特定のまとまった処理を 1 つにまとめ、ほかの処理から呼び出して使えるようにした部品である。
← 図は横にスクロールできます →
呼び出されると処理を実行し、終わると呼び出した側の続きへ戻る。同じ処理を何か所にも書かずに済み、1 か所直せば呼び出しているすべての箇所に反映される。言語によっては 関数 や 手続き とも呼ばれ、サブルーチンがさらに別のサブルーチンを呼び出すこともできる。
たとえ料理の手順書で「だしの取り方は別ページ参照」と書いておき、必要な場面で何度でもそのページを見に行くのに似ている。
覚え方sub は「下の・従属の」を表す接頭語で、サブマリン (水面の下を進む船) の sub と同じ。
出題のポイント
- 混同注意メインルーチン は実行の起点として全体の順序を決め、サブルーチン は呼び出されたときだけ動いて呼び出し元へ戻る。
要点
- 字下げ と インデンテーション は同じ整形を指し、行頭の空白でまとまりの範囲を見せる。
- 入れ子の段が深いほど読み違いが起きやすいので、深い部分は別の処理に切り出して浅く保つ。
- 命名規則 などの書き方の取り決めをそろえると、書いた本人以外も読みやすく、後から直しやすい。
- モジュール分割 は役割ごとに部品を作り、修正の影響範囲を小さくし、部品の使い回しを可能にする。
- サブルーチン にまとめた処理は何度でも呼び出せ、直すのは 1 か所で済む。
この分野の過去問をすべて見る →