15章「分/時間カウンタ」を設計・実装する

これから本物のプロダクトコードで使われているデータ構造「分/時間カウンタ」を見ていこう。問題を解決して、パフォーマンスを改善して、機能を追加する。このようなエンジニアの自然な思考プロセスをたどることにしよう。でも、いちばん大切なのは、本書の原則を使ってコードを読みやすくすることだ。途中で間違った道に進んでしまうかもしれない。君は無事に付いて来れるだろうか。

15.1 問題点

ウェブサーバの直近1分間と直近1時間の転送バイト数を把握したい。以下はこれらがどのように保持されているかを示したものだ。

素直な問題だ。でも、これを効率的に解決するのは簡単ではなさそうだ。まずは、クラスのインタフェースを定義するところから始めよう。

15.2 クラスのインタフェースを定義する

以下は、C++で書いたクラスのインタフェースの最初のバージョンだ。

class MinuteHourCounter {
  public:
    // カウントを追加する
    void Count(int num_bytes);

    // 直近1分間のカウントを返す
    int MinuteCount();

    // 直近1時間のカウントを返す
    int HourCount();
};

このクラスを実装する前に、名前とコメントを見ていこう。変更したい箇所があるかもしれない。 ...

Get リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.