LoginSignup
1
0

More than 5 years have passed since last update.

comment > 意図について記載する, if/for/whileの後の空白, 関数の後の空白(なし)

Last updated at Posted at 2018-03-06
動作環境
C++ Builder XE4

擬似コード

while(!UDP受信(50msec).IsEmpty);

UDPコマンド送信;
UDP受信処理;

50msecごとに受信しているのは何をしているのか?

推測

コマンド送信の前に受信バッファ内をすべて読込むことで空にしている、という処理のようだ。

コメント: 意図について記載する

以下のようにすると意図が分かる。

// 受信バッファのクリア
while(!UDP受信(50msec).IsEmpty);

UDPコマンド送信;
UDP受信処理;

意図のコメントはある方がいいと思うが、それ自体を書かないスタイルの人はいる。

さらに、!を使っているため、手違いで!を消してしまうと追跡不能な不具合に発展する。

失敗

上記のコードに別の不具合対策をするうちに、!IsEmpty()の論理をIsEmpty()の論理にする失敗をしていた。

その時点で、以下の間違った考えを持っていた。

  • 間違い
    • 受信バッファが空の間はUDP受信を50msecごとにする
    • 受信バッファが入った時点で後の処理をする
  • 正しい
    • 受信バッファを空にする
    • 受信バッファが空の状態で後の処理をする

前者はプログラムが「命令受信側」として使う実装で、後者はプログラムが「命令送信側」として使う実装である。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0