メインコンテンツへスキップ
見出し画像

【開発哲学3_11】〜『CODE COMPLETE第2版 第11章(上巻)』の感想〜変数名の力

    感想

    すでに普段意識して実践してるんだけど、
    何かで調べ物したい時のことを考えて、
    重要だなと思うところのページの端を折って読んでいったら、
    30数ページで20箇所以上になったので、
    全部重要ってことで、、、💦

    やっぱりコードは、

    書くものと同時(かそれ以上)に読み物 = 文芸的プログラミング

    だなあ。

    詳細

    見出しとしては、

    1. 良い名前を選択するために

    2. 特殊なデータの命名

    3. 命名規則の力

    4. 略式の命名規則

    5. 標準のプレフィックス

    6. 短くて読みやすい名前の作成

    7. 避けるべき名前

    8. まとめ

    て感じ。

    なんだけど、各節の途中に書いてある

    • 問題指向の名前

    • 名前の最適な長さ

    • 変数名の一般的な反意語

    • ループ変数、状態変数、一時変数、列挙型の命名

    などどれもわかりやすくて示唆に富む。

    本文に名前自体は

    出ていないけど、スネーク記法とキャメル記法についても各言語(VBやJava、Cなど)でどうするかを詳細に書いている。

    普段の職場では、

    GAS=オブジェクト指向言語を使っているので、キャメル記法で、

    1. スクリプト名やルーチン名:日本語かアッパーケース

    2. 変数や定数名:ローワーケース

    3. 基本的に略語は使わない(cntは別)

    4. 名前の内容はモノ自体を指すか、状態か操作+オブジェクト名にしてる。

    5. i、j、kは、ループの中だけで終わる一時的な変数で使い捨てるならば使うけど、多重ループ(3階層以上)とか、その後も使うものでは、極力使わない。

    でやってる。

    例(あくまでも一例)

    function InputRowsNumber(){
      let ss,sh,lastRow;
      ss = SpreadsheetApp.getActiveSpreadsheet();
      sh = ss.getActiveSheet();
      lastRow = sh.getLastRow();
      for (let rowsCnt = 1; rowsCnt <= lastRow; rowsCnt++ ){
        //入力処理 
      }
    }

    や

    function 行番号を入力(){
      let ss,sh,lastRow;
      ss = SpreadsheetApp.getActiveSpreadsheet();
      sh = ss.getActiveSheet();
      lastRow = sh.getLastRow();
      for (let rowsCnt = 1; rowsCnt <= lastRow; rowsCnt++ ){
        //入力処理 
      }
    }

    みたいな感じ。

    駆け出しの頃、

    日本語対応できるプログラミング言語で、
    変数や引数、定数まで全て日本語で書けないかなあ
    と試したけど

    function 行番号を入力(){
      let スプレッドシート,シート,最終行;
      スプレッドシート = SpreadsheetApp.getActiveSpreadsheet();
      シート = スプレッドシート.getActiveSheet();
      最終行 = シート.getLastRow();
      for (let 行カウント = 1; 行カウント <= 最終行; 行カウント++ ){
        //入力処理 
      }
    }

    ここまで日本語だと却って、
    ルーチンの呼び出しの時とか変数を利用するときにかなり面倒臭いことになったので、

    クラス名とかスクリプト名だけ日本語にして、

    このスクリプトは、何をしているのか初めて見た人がわかる

    ようにしてる。
    (第9回のPPPと一見矛盾するように思うかもだけど、あれは処理に考慮もれがないかを洗い出す作業だからね)

    もちろん人によっては、

    これでは読みにくいって人もいると思うけど、今までの現場で注意されたことないなあ。
    注意されたら変えれば良いだけの話だし。

    去年、

    も立ち読みしたときに、実務では引数や変数名も日本語で書く
    とか書いていたけど、

    職場のルールや状況によりけりかなあ

    まとめ

    読みやすい、わかりやすいはその人や組織次第だけど、読みやすいコードを書くのに必要な力は、

    語彙力🕺

    正解がないからこそ、読みやすさを意識✨
    クイズ、引っかけ問題、自分ルールみたいな命名は(未来の自分に対してすら)読みにくくしてるだけ💧

    どんな人間も忘れるからねー

    昔、会社員していた頃のエピソード

    この人読みにくいコード書くなあって人がいて、ある時その人が、
    「こんな読みにくいコード誰が書いたんだ💢」、「開発部署のくせに、こんな読みにくいコード書きやがって💢💢💢」と怒り出し、
    その人自身でよくよく調べてみたら、
    その人自身が、数年前に開発部署にいた頃に自分で書いていたことが判明して、ぐうの音も出ないなんてこともあったなあ。

     
     
    タダの道楽者💫ネガティブなコメント一切お断り 裾野が広がりゃそれで良い 洋書と古典とSwiftをこよなく愛するオッさん👀 色即是空🕺 記事はマガジンの方が読みやすいかな💦 ちょい難とダラダラ💃 無駄な対立軸と課題探し思考は要らんな。 変幻自在➕縦横無尽➕融通無碍🟰天衣無縫

    あなたへのおすすめ