見出し画像

【開発哲学3_10】〜『CODE COMPLETE第2版 第10章(上巻)』の感想〜変数の使用

いよいよ第3部 変数✨
より具体的で身近なコーディングの話になってきたな🕺

感想

変数の接続時間、変数の寿命、永続性、バインディングタイム
などなど、
普段、自然と意識して身に付いてることだな。
数年前に読んで、意識して実践したから、内容の方をすっかり忘れているやつ。笑

詳細

見出しとしては、

  1. データリテラシー

  2. 変数宣言のガイドライン

  3. 変数の初期化のガイドライン

  4. スコープ

  5. 永続性

  6. バインディングタイム

  7. データ型と制御構造の関係

  8. 一つの目的に一つの変数

  9. まとめ

て感じ。変数名の具体的な付け方は次章以降で、

ここでは主に

変数の位置

をしっかり解説。

たしかに、

変数に関しては、同じ名前の変数を全然違う用途で複数箇所で使う人がいて、解読が死ぬほど面倒くさいは現場ではあるある。

例えば、

「値が入った最終行以降のスプレッドシートの空白行を全て削除したい」

場合に、(思いつきで書いているからコードは正確じゃないかも、、、💦)

//最終行
let lastRow = sh.getLastRow();

//最終行以降の空白行
lestRow = sh.getMaxRows();

//最終行の次の行から空白行を全て消す
sh.deleteRows(lastRow + 1, lastRow - lastRow);

で、

どちらも最終行だから

と安易にやっちゃうと、同じ値から同じ値を引いているから、ひとつも削除されないかバグが発生するみたいな

想定されないエラー

を自分で惹き起こしちゃう。

次によくやるのが、

//最終行
let lastRow1 = sh.getLastRow();

//最終行以降の空白行
let lestRow2 = sh.getMaxRows();

//最終行の次の行から空白行を全て消す
sh.deleteRows(lastRow1 + 1, lastRow2 - lastRow1);

て感じで、変数に数値を割り振って増やすパターン。

見てわかるとおり、

  1. lastRow1,lastRow2と数字以外は重複しているから、自分で書いてない人は、一見しただけではどっちがどっちだっけ?ってなっちゃう。

  2. じゃあ、他の目的で機能を追加するたびにlastRow3,lastRow4、、、て感じで似た目的なのに、数字だけ割り振って似通った変数をどんどん増やすんかな?

て感じになっちゃう。

原因

やりたいことが具体的に突き詰められてないから起きちゃうネーミングや定義ミス💧

「値が入った最終行以降のスプレッドシートの空白行を全て削除したい」

をより具体的に表現すると、

「スプレッドシートの有効値が入った最終行の次の行からスプレッドシートの最大行までの空白行を全て削除したい」

てことだから、

//最終行
let lastRow = sh.getLastRow();

//スプレッドシートの最大行
let maxRow = sh.getMaxRows();

//最終行の次の行から空白行を全て消す
sh.deleteRows(lastRow + 1, maxRow - lastRow);

て感じで、きちんと役割が違うものだって明記できる。さらに、

普段の実務では、

//変数
let lastRow,maxRow;

//最終行
lastRow = sh.getLastRow();

//スプレッドシートの最大行
maxRow = sh.getMaxRows();

//最終行の次の行から空白行を全て消す
sh.deleteRows(lastRow + 1, maxRow - lastRow);

てな感じで変数の定義利用も分離しちゃう。

理由

不用意にブロックやスコープごとに変数自体を定義していくと、同じ目的なのに違う名前(や番号)か、違う目的なのに同じ名前(や番号)みたいな変数が、

  • 無限に増えて乱立

  • バグも起きやすい

  • 改修にも時間がかかる

ので、変数の定義と利用は分けて再利用しちゃう。
(分離すると却って読みにくいって人もいるけど、、、💦)

本章の趣旨も、

変数はなるべく近くで利用すること
変数の利用は開始から終了までなるべくまとめること

なので、分離しても趣旨に反しないかなあ。

まとめ

実現したいこと(=要求)を、
より具体的に(言葉や文章で)表現することが大事 
= 詳細設計

今回作ったサンプルコード(コピペでOK)

実行前

2行目以降が空白行

実行後

💃削除できた🕺

コード

ここから先は

459字

¥ 100

この記事が気に入ったらサポートをしてみませんか?