̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ IT ニュース&コラム 2015/ 6/15 通巻689号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 連続した空白を1つにまとめるな - リーダブル・コード(36) HTML では、改行文字やタブ文字も空白として表示します。 これによって、 ウィンドウやディスプレイの横幅に合わせて、行の幅を変えることができます。 これはこれで便利なのですが、連続した空白も1つの空白になります。 連続した空白は、空白文字をミスして連続して入力してしまったのだろう ということで、親切にも1つの空白に直してくれたのでしょう。 しかし、連続した空白は、必ずミスなのでしょうか。 もし、必ずそうであれば、 連続した空白を入力できないようにしたワープロ(ワード プロセッサー)が あると便利なはずですが、そんな機能は存在しません。 空白を入れたいのに 入らないじゃないか!とユーザーが怒ってしまいます。 なぜ怒る人がいるのか 考えてみましょう。 HTML には、空白の代わりに   を書くと連続した空白ができ、よく使われ ますが、nbsp は Non Breaking Space という意味で、改行しない空白という 意味です。 HTML で空白の幅を変える方法は、正式には以下の文字参照を 使うことのようです。 ・  … n の幅の空白。 一般の空白より少し広い ・  … m の幅の空白。   より少し広い ・  … 一般の空白より少し狭い (空白の文字は他にもあります) しかし、プログラムのソース ファイルやテキスト形式のメールで連続した空白 を使うケースは、空白の幅の加減をしたいケースだけではありません。 表の ように、縦の線(列)を揃えたいことがあります。 HTML では TABLE タグが使え ますが、テキスト形式のソース ファイルやメールでは、TABLE タグは使えません。 しかも、HTML では、PRE タグによって連続した空白による整形済みテキストが 使えます。 エディターによっては、/* 〜 */ 形式コメントの */ を縦に そろえる機能があったりします。 ところで、連続した空白は、縦の線を揃えるためだけではありません。 実は もうすでに説明していたりするのですが、  など、空白の幅を変えるため というのがあります。 リーダブル コードにするには、この空白の幅にも注目 します。 フォントによりますが、多くのプロポーショナル フォント(文字の幅が それぞれ異なるフォント)では、空白文字よりもアンダースコアの文字の方が 幅が広いです。 このため、どういうことが起きるかというと、変数宣言を している次のコードを見てください。 sample_type int_variable; このコードをパッと見たときの塊を ( ) で表すと (sample) (type int) (variable) のように見えてしまいます。 空白文字によって、型と変数を区切るという ことが表現しきれていないのです。 まぁ、プロポーショナル フォントなんて プログラムのソース コードになんか使わねぇよ、と突っ込まれるので、 では、実際のソース コードでよく使われる等幅フォントで見てみましょう。 sample_type int_variable; このコードをパッと見たときの塊を ( ) で表すと (sample) (type) (int) (variable) のように4つの語に見えてしまいます。 いやアンダースコアがあるから 明らかに2つの語にしか見えないだろう、よく見ろよ、と思うでしょう。 では、空白を2つにしてみましょう。 sample_type int_variable; 2つの語であることが一瞬で判別できますね。 よく見る必要なんてありません。 プログラミング上の種類によって、スネークケース(小文字とアンダースコア、 または、大文字とアンダースコア)で表現するルールを作ったときは、 空白を1文字に正規化すると、このような副作用が発生してしまうのです。 古い Basic では、サブルーチン呼び出しに括弧が使えなかったので、 サブルーチン名と第1引数の間を空白2つにすると読みやすくなります。 変数宣言と同じ、識別子+空白+識別子という並びですから。 空白の左(変数宣言なら型)にアンダースコアがないときは、空白は1つで 十分であるように見えます。 アンダースコアがあると、空白は2つ必要です。 しかし、引数において、第1引数の型にアンダースコアがなく、第2引数に型に アンダースコアがあると、今度は、第1引数と第2引数で空白の数が違うことが 逆に目立つように見えることがあります。 これらの印象はすぐに変わります。 なので、コーディング レビューにおいてあまり指摘しない方が良いでしょう。 参考 http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9 http://blog.livedoor.jp/sage_p/archives/51906724.html http://vim-jp.org/vim-users-jp/2009/09/24/Hack-77.html http://codezine.jp/article/detail/5156 リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック オライリージャパン ISBN-13: 978-4873115658 4.4 縦の線をまっすぐにする 注目ニュース 一覧 ◇ 最初の感染端末でまずアドレス帳窃取か? 年金機構へのウイルスメール。 http://internet.watch.impress.co.jp/docs/news/20150605_705594.html … 業務に支障が出るとしても PC を止められるか。 ◇ 7月29日から提供開始:Windows10、PC市場踊らず パッケージ販売もなし。 http://bizmakoto.jp/makoto/articles/1506/12/news034.html … プリインストールされた Windows 10 パソコンも提供当日にはない。 ◇ Visual Studio 2015におけるクロスプラットフォーム開発の選択肢。 http://www.atmarkit.co.jp/ait/articles/1506/12/news022.html … JS なら Apache Cordova。 C# なら Xamarin。 ◇ 無線LAN ただ乗り を初摘発、電波法違反容疑で男を逮捕。 http://internet.watch.impress.co.jp/docs/news/20150612_706745.html … 暗号レベルが低い古い無線LAN だけ突破できたのだろうか。 ◇ 新MacBook 向けのUSB-C変換アダプタ。Hub+ for USB-C。 http://japan.cnet.com/news/service/35065292/ … 中途半端かも。 クラウド ファンディングによる事業。 ◇ アップルCEOのクック氏、競合企業のプライバシー慣行を批判。 http://japan.cnet.com/news/business/35065409/ … アップルがプライバシーをよく守っている印象はない。 ◇ これ欲しい! Apple Design Award 2015 受賞アプリ12選。 http://www.itmedia.co.jp/pcuser/articles/1506/14/news009.html … ゲームばかり。 ソフトウェアデザイン館 Sage Plaisir 21 ホームページ >>> http://www.sage-p.com/ メルマガ >>> http://www.mag2.com/m/0000083983.html ブログ >>> http://blog.livedoor.jp/sage_p/ ツイッター >>> http://twitter.com/Ts_Neko ダウンロード >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災 >>> http://www.sage-p.com/saigai.html メール >>> ts-neko◇sage-p.com ←◇を@に変えてください 緊急メールは件名に「うどんメール」を付けてください。 このメルマガの登録・解除 - http://www.mag2.com/m/0000083983.htm