【開発哲学3_12】〜『CODE COMPLETE第2版 第12章(上巻)』の感想〜基本的なデータ型
感想
マジックナンバー、マジックキャラクター、マジックストリングを使わない
をやるとやらないでは全然、その後の改修の手間が違うもんなあ。
仕組み作りの段階では、どうしてもベタ打ちになっちゃうんだけど、
後々、繰り返し使う数字や、
getRange(’A:K’)
みたいな箇所は、値が変わったら、いっぺんに変更ができるように、
const columnsSum = ’A:K’;
getRange(columnsSum)
名前付けて管理しておくと楽ちん✨
仕組みができるまでは同時にやるのは、骨が折れるから
仕組みができて検証まで終わったら、リファクタリングする
が大事。
GREPしても、正確にそれだけ全部拾えて置換できる保証なんてないし。
時間的な余裕がないと中々できないって意見もあるけど、
逆に事後的にリファクタリングまでスケジューリングして積極的に潰さないと、いつまでも余裕が生まれないんだよね。
おそらく、10倍くらいコード改修の効率が違うんじゃないかな。
ただし、
あまりやりすぎると、この名前はなんだったけ?ってなる。
前章:変数名の力が大事。
最近のプラットフォームは、インテリセンスが充実しているから、候補から「ああ。あれかあ」って感じで想起が早くなる。
詳細
見出しとしては、
数値全般
整数
浮動小数点数
文字と文字列
ブール変数
列挙型
名前付き定数
ユーザー定義型の作成(型のエイリアス)
まとめ
て感じ。
ざっと1周読んだ後では、
各節の各見出し部分などの太字部分と、章末のチェックリストが使えるかな
(いきなりそこだけ読んでも「何のこっちゃ?」になるけど)。
皆、20みたいな数字にしろ、変数i、j、kにしろ何かしらの意味を表して使ってる(はず)。
数をベタ打ちせずに名前をつけるって言っても、命名方法がわからないと、それだけで四苦八苦して、結局効率が悪いからやらないになる人多いんだよね。
例えば(あくまでも例)
二次元配列でループ処理する時に、教科書どおりに変数i、j、kを使って
function 最終行の10列目まで行数の3倍に列数の2倍を足した値を入力(){
let maxRow = sh.getMaxRows();
let maxColumn = sh.getMaxColumns();
for(i = 1 ; i <= maxRow ; i++){
for(j = 1; j <= maxColumn; j++){
let value = i * 3 + j * 2
sh.getRange(i,j).setValue(value);
}
}
}
てやりがちなんだけど、二次元配列とか2段階以上のループの時に、
i、jがどっちだったっけ?てよくなるやつ。
function 最終行の10列目まで行数の3倍に列数の2倍を足した値を入力(){
let maxRow = sh.getMaxRows();
let maxColumn = sh.getMaxColumns();
for(rowNum = 1 ; rowNum <= maxRow ; rowNum++){
for(columnNum = 1; columnNum <= maxColumn; columnNum++){
let value = rowNum * 3 + columnNum * 2
sh.getRange(rowNum,columnNum).setValue(value);
}
}
}
の方が、何をしてるかがわかりやすい。。
教科書とかでi、j、kで習ったから逆に読みにくいとか
癖になっているから今更やりにくい
って人もいると思うけど💦。
VBAで、
ループさせる引数に、
Dim i as Integer
って感じで、桁数を意識せずにやろうとする人も多いけど、
はっきり桁数を意識して何桁までの許容させたいか
を意識しないと桁溢れエラーを起こしていた人が多かった記憶が、、、💦
(しかもエラーコードの番号に意味があることも知らないから、お手上げ状態になってた。ネットで調べてもすぐわかるのに、、、。)
個人的には、Long型を使うことが多かったかな。
最近はGASしかやってないから、VBAの正確なコードは誦じては無理だけど🙇♀️
参考書には、
CIntやCDbl、Valみたいな型変換関数が必ず載っているはずなんだけど、
結構使わない人多いし、忘れている人も多い。
異なる型(特にインプットボックスで文字列で入力された数字)を裏側で計算したい時とか使ってたかな。
職場や人によりけりだから、
どこまでやるかは、所属するチームや組織の規約次第だけど、
資格を取得した10年くらい前は、Option Explicitで変数を必ず宣言させるが普通だったけど、最近は(それで良いとは思わないけど)そんな制約をしない職場も増えたな。
一時変数ほど恐ろしいものはない😫
まとめ
ベタ打ちの数字や文字列
不用意な変数と型指定
にはご用心💦
仕組みが出来上がったら、面倒でも
リファクタリングして意味のある名前でまとめる
とめちゃくちゃ楽になる🕺