🐏

リーダブルコード (例文解読) memo #2

2024/07/28に公開

例文

ex) if (debug) {
map<string,int> m;
LookUpNamesNumbers(&m); Print(m);
}

map<string,int> m;
  • 文字列(string)をキーとして、整数(int)を値とするマップ"m"が宣言されている。
  • c++の標準ライブラリ(map)を使用して、キーと値のペアを管理するための連想配列(マップ)を作成する。

連想配列

https://zenn.dev/goldsaya/articles/9738b2754285b1

  • マップ、ハッシュマップ、ディクショナリとも呼ばれる
  • キーを使用して、特定の値に直接アクセスできるため、データの検索にとって効率的なデータ構造
LookUpNamesNumbers(&m);
  • マップ(m)のポインタを引数として渡す。この関数は名前と番号を検索して、マップ(m)にキーと値のペアとして格納することを目的としている
Print(m);
  • マップ(m)の内容を表示するために"Print"関数が呼び出されている。
  • "Print"関数はマップのキーと値を出力する役割を果たす。

[ 流れ ]

  1. デバッグモードが有効かどうか確認
  2. デバッグモードが有効であれば空のマップ(連想配列)'m'を作成する
  3. LookUpNamesNumbers関数を呼び出し、マップmに名前と番号のペアを追加する。
  4. Print関数を呼び出し、マップmの内世を表示する。
  • デバックモードで動作確認するためのコードブロックが示されていて、一般的には、データの検索および表示に関する処理が行われることを期待する。
static const int kMaxOpenFiles = 100;
  • C++(コピーコンストラクタ)プログラムで、定数を宣言するための典型的な方法の一つ。

  • staticは、この変数がその定義されたファイル内でのみ(他のファイルからはアクセスできない)であることを意味。
    staticはファイルスコープの変数を作成するために使われる。

  • 効果として、他のファイルからこの変数を直接使用することができないようにして、名前の衝突を防ぐ。

    ファイルスコープ

  • プログラムを記述したファイルの内側でのみ参照できるスコープ(影響範囲)
    プログラムが複数のファイルから構成される場合は他のファイルから参照することはできない。

  • constこの変数が定数であり、その値が変更されないことを保証する。

  • 効果は、定数として定義された変数は、値を変更することができず、プログラムの安全性と可読性が向上する。

  • int変数のデータ型を示す。ここでは、整数型。
    変数が整数値を保持することを示す。

  • kMaxOpenFilesこれは変数名。ファイルの"maxopen"だから
    ファイルの最大数を意味する名前として付けられた。

  • " k "をつけることで、その変数が定数であることが明確になる。これにより、コードを読む他の開発者はその変数の値が変更されないことをすぐ理解できるようになる。(定数であることを明示する)

  • プログラム内で、この名前を使用して定数にアクセスすることができる。
  • = 100変数の初期化。変数に100を割り当てている。

[ まとめ ]
この宣言はファイル内で変更不可能な整数定数kMaxOpenFilesを宣言し、値を100に設定している。プログラムの他の部分で、この定数を使用して、例えば同時に開くことができるファイルの最大数を制限することができる。


class LogReader { public:
void OpenFile(string local_file);
private:
int offset_; DISALLOW_COPY_AND_ASSIGN(LogReader);
};
  • class LogReader で、"LogReader"クラスを宣言。

  • publicセクション内のメンバーやメソッドは、クラスの外部からアクセスできる

  • void OpenFile(string local_file)
    OpenFileメソッドはlocal_fileという名前の文字列を引数にとり、
    ファイルを開くことを目的としている

  • voidは、このメソッドが値を返さないことを示す。

    [戻り値いる時、いらない時]

    • そもそも戻り値とは、"メソッドが呼び出された時に、呼び出し元に返される値のこと。
    • 戻り値がいる場合
      メソッドが呼び出された結果として、呼び出し元に値を返したいときは戻り値が必要。呼び出された時に、呼び出し元に「この値を使って処理を進めてください」と値を渡してあげるイメージ。
      わかりやすい
         - 戻り値がいらない場合
      表示するだけ。ファイルに書き込むだけ。他
      https://qiita.com/saeki_y/items/c5ad73e36291f3c531ed
  • int offset_intは整数型のこと。offset_という名前のプライベートメンバー変数は、整数型で、ファイル内のオフセットを保持するために使用する


ファイル内のオフセットを保持するとは、ファイル内の特定の位置を指し示すためにその変数を使うという意味。オフセットはファイルの先頭からの相対位置を示す整数値。

ファイルの内容を読み書きする際に、そのファイル内のどの位置から操作を開始するかを示すために、オフセットが使われる。
例えば、オフセットが0であればファイルの先頭、オフセットが100であればファイルの先頭から100バイト目の位置を示す。


DISALLOW_COPY_AND_ASSIGN マクロ

  • コピーコンストラクタ(C++)と代入演算子の使用を禁止するために使用される。
  • マクロはアプリケーションソフトであらかじめ操作手順を設定しておくことによって、必要なときに簡単に実行させることができる機能

エンティティ

  • ER図で出てくる箱のこと。"実体"の事らしい。
  • 実体って何?は考えたらいけない。「 エンティティ=実体 」

https://wa3.i-3-i.info/word11594.html

Discussion