KiSAKU
技術系約5分で読めます

意味を変えずに、引っかからない形へ書き直す

公開

隠すのをやめて、書き直すことにしました。記事に載せているサンプルコードのほうを、引っかからない形にします。

条件は1つ、説明として意味が変わらないことです。通すために嘘を書いたら本末転倒になります。

この記事で扱うこと

実際に使った3つの書き換えと、その結果。2つは読みやすさが上がり、1つは下がりました。下がったほうをどう扱ったかまで書きます。

連載「弾かれる」(全5回)

第1回:症状の切り分け/第2回:二分探索で原因を絞る/第3回:エスケープが効かなかった理由/第4回:意味を変えずに書き直す(この記事)/第5回:正しく止められたときに何を残すか

1. 文字列の組み立て方を変える

引っかかっていた1つめは、文字列の中に値を埋め込む書き方でした。特別な記号で全体を囲むと、その中に計算結果を差し込めます。

これを、普通の文字列と値をつなぐ形に直しました。

やっていること 結果
元の書き方 囲んだ中に値を差し込む 落ちる
直した書き方 文字列と値をつなぐ 通る

出来上がる文字列はまったく同じです。ただし、読みやすさは落ちました。埋め込む書き方のほうが、完成形を目で見て確認できます。

読みにくくなった理由を、記事に書き足した

ここは正直に書くしかないと判断しました。「この書き方が推奨というわけではありません」という一文を足しています。

書き換えた理由を書かないと、読んだ人が「こちらのほうが良い書き方なのだ」と受け取ります。制約で曲げた場所は、曲げたことを言っておかないと、間違った作法として伝わります。

2. 処理の連鎖を、表にする

2つめは、置き換えの命令でした。文字を別の文字に差し替える処理です。名前に括弧が続いた形が、そのまま引き金になっていました。

元の記事では、この命令を4回つないで書いていました。4つの記号を順に差し替える処理です。

そこで、コードを載せるのをやめて、対応表にしました。

元の文字 差し替え後
空白(連続) 詰めない特別な空白
小なり その記号を表す名前
大なり その記号を表す名前
アンパサンド その記号を表す名前
こちらは、明らかに読みやすくなった

4つつないだコードは、順番に目で追わないと何が起きるか分かりません。しかも順番に意味があります(アンパサンドを最初に処理しないと二重に変換されます)。

表にすると、何が何になるかが一目で分かります。結果として、元より良い説明になりました。制約が無ければ表にしていなかったと思います。

3. 条件式に名前をつける

3つめは、判定を書いた行でした。ある文字列が決まった形をしているかを確かめる処理が、引っかかる並びを含んでいました。

直し方は、その判定を定数として外に出して、名前をつけることです。

行の中身
元 判定の条件がその場に書いてある
直した後 名前だけが書いてある。条件は上で名前として定義

この判定は「時間帯の情報が付いているかどうか」を見るものでした。名前を付けると、条件の中身を読まなくても何を判定しているかが分かります。

ここも、結果として読みやすくなりました。ただし1つ注意が要ります。

名前は説明であって、仕様ではない

あとから記事に一文足しました。「これは自分で付けた名前で、決まった名前ではありません」という断りです。

説明のために付けた名前を、読んだ人が用意されている機能の名前だと思う可能性があります。検索しても出てきません。自分で付けたものは、付けたと書いておく。

3つ並べると

やったこと 読みやすさ
1 埋め込みを、つなぐ形に 下がった
2 連鎖を、対応表に 上がった
3 条件に名前を付ける 上がった

2勝1敗でした。そして2と3は、制約が無ければやっていません。元の書き方で動いていたし、不満も無かったからです。

外から「この形は使えない」と言われたとき、代わりの形を探します。探した結果、元より良いものが見つかることがある。これは制約の副産物であって、制約が良いという話ではありません。1のように、単に悪くなる場合もあります。

この記事自体が、同じ制約の下にある

最後に1つ。この連載は、引っかかる文字の並びを1文字も書けません。書いたら、この記事が登録できなくなります。

そのため、ここまで一度も具体的な記号や命令の綴りを書いていません。全部、言葉で説明しています。

書きにくいかと言うと、そうでもありませんでした。記号を書けないぶん、何をしているかを日本語で説明する必要があります。結果として、その記号を知らない人にも読める形になりました。

今回の学び

まず、制約で曲げた場所は、曲げたと書くということ。理由を書かずに不自然な書き方だけを残すと、読んだ人がそれを作法だと受け取ります。悪くなったほうを隠すと、悪いものが広がります。

次に、代わりの形を探すと、元より良いものが出ることがあること。3つのうち2つは、制約が無ければ手を付けていませんでした。ただし1つは単純に悪くなったので、制約そのものが良いという話ではありません。

そして、記号を書けない説明は、記号を知らない人にも届くこと。書けないので全部言葉にしました。結果として、前提知識が少なくても読める形になっています。制限のほうが読者を広げた場面でした。

この記事を共有する

Xでポストはてブ
← ブログ一覧へ戻る