見出し画像

【開発哲学3_12】〜『CODE COMPLETE第2版 第12章(上巻)』の感想〜基本的なデータ型

感想

マジックナンバー、マジックキャラクター、マジックストリングを使わない

をやるとやらないでは全然、その後の改修の手間が違うもんなあ。

仕組み作りの段階では、どうしてもベタ打ちになっちゃうんだけど、
後々、繰り返し使う数字や、

getRange(’A:K’)

みたいな箇所は、値が変わったら、いっぺんに変更ができるように、

const columnsSum = ’A:K’;

getRange(columnsSum)

名前付けて管理しておくと楽ちん✨
仕組みができるまでは同時にやるのは、骨が折れるから

仕組みができて検証まで終わったら、リファクタリングする

が大事。

GREPしても、正確にそれだけ全部拾えて置換できる保証なんてないし。

時間的な余裕がないと中々できないって意見もあるけど、
逆に事後的にリファクタリングまでスケジューリングして積極的に潰さないと、いつまでも余裕が生まれないんだよね。

おそらく、10倍くらいコード改修の効率が違うんじゃないかな。

ただし、

あまりやりすぎると、この名前はなんだったけ?ってなる。
前章:変数名の力が大事。
最近のプラットフォームは、インテリセンスが充実しているから、候補から「ああ。あれかあ」って感じで想起が早くなる。

詳細

見出しとしては、

  1. 数値全般

  2. 整数

  3. 浮動小数点数

  4. 文字と文字列

  5. ブール変数

  6. 列挙型

  7. 名前付き定数

  8. ユーザー定義型の作成(型のエイリアス)

  9. まとめ

て感じ。

ざっと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で変数を必ず宣言させるが普通だったけど、最近は(それで良いとは思わないけど)そんな制約をしない職場も増えたな。
一時変数ほど恐ろしいものはない😫

まとめ

  • ベタ打ちの数字や文字列

  • 不用意な変数と型指定

にはご用心💦
仕組みが出来上がったら、面倒でも

リファクタリングして意味のある名前でまとめる
とめちゃくちゃ楽になる🕺

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