̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ IT ニュース&コラム 2013/ 8/19 通巻633号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 表の中にタブ文字を入れるな - リーダブル・コード(8) 文章やプレゼン資料の中に、表を用いると読みやすくなりますが、ソース・ コードにも表のようなものを入れると、読みやすくなります。 といっても、ソース・コードに(日本語文字に相当する)罫線を書くことは できないので、列があるように見えるよう、パラメーターを縦にそろえる のです。 C/C++ 言語で最もよく使われる表は、変数宣言です。 1列目が型、2列目が 変数名にします。   int   value;   short  level;   int   volume;   char*  str; 表にしないで書くと、下記のようになります。   int value;   short level;   int volume;   char* str; 表にしないときに問題になるのは、2列目以降の特定の列だけを上から下に 見ていくことが難しくなることです。 変数宣言において主役は変数名なの ですが、その主役である変数名を一覧することができないというのは、 大きく可読性が落ちているといえるでしょう。 少し余談ですが、ポインターを表す "*" を型名ではなく変数名に付ける 人もいますが、その場合、変数名の列が少し右にずれてしまいます。 それを 避けるために、"*" 文字だけを1文字分左にずらすスタイルもあります。 * も含めたものを縦に揃える場合、   int   value;   int   *pointer;   int   volume; * を除いたものを縦に揃える場合、   int   value;   int  *pointer;   int   volume; 他にも、同じ関数を何度も呼び出すときに縦を揃えると、タイプミスが 見つけやすくなります。 下記の場合、関数名のそれぞれの文字や、 "(" 文字がずれていることで、関数名にタイプミスがあることが分かります。   value  = GetAttribute( "value" );   details = GetAtribute( "details" );   x    = GetAttribute( "x" ); もし、列全体を右にずらしたいときは、テキスト・エディターの「矩形選択」機能 を活用します。 Visual Studio や sakura エディタでは、Alt キーを押しながら、 変数名の左側にある空白文字を縦長の矩形(長方形)の形になるように マウスでドラッグして、コピー&ペーストすると、列が1文字分ずつ 右に移動します。 これで、長い型名が追加されても簡単に、表を維持できます。 しかし、矩形選択する部分(2列目以降の列の前)が空白文字ではなく タブ文字になっていると、他の人がソース・コードを見たときに列が 縦に揃わなくなることがあります。 その原因は、テキスト・エディターの ユーザー設定に設定されたタブの長さが異なるからです。 これを嫌って、タブ文字を4や8に限定してしまったり、タブ文字を禁止にして しまったりする、宗教的なコーディング・ルールが各所で生まれてしまって います。 せっかく C言語は最も多くのプラットフォームで使えるにも かかわらず、そのままでは再利用できないのが現状なのです。(大文字小文字の コーディング・ルールの方がもっと大きな問題ですが) タブの長さを自由に変えることができつつ、表が崩れない方法は、下記の 「タブ文字の幅を変えても崩れないソースコードの書き方」を参照してください。 しかし、これも1つの流派なので、もし、仕事で理不尽な強制を受けたときは、 vbslib の TabToSpace コマンドなどを使ってタブ文字と空白文字を変換して ください。(テストは変換後のソースを使ってください) ちなみに、MS Word では、タブの長さではなく、段落ごとにタブ位置を設定 できるようになっています。 その場合、列の区切りをタブ文字(1文字だけ) にします。(エクセルの表をコピーして、テキスト・エディターにペースト したときも、列の区切りはタブ文字です。) タブ位置を設定できることで、 等幅ではない欧米フォントでも縦にそろえることができるようになります。 テキスト・ファイルでは、タブ位置の情報をファイルに埋め込むことが できないため、テキスト・エディター側にタブの長さを設定することに なります。 列の中の最大の長さに合わせればいいだけのことなのですが、 表の高さの範囲を何かで情報を与えなければならないため、そのような テキスト・エディターは登場していません。 参考: リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック オライリージャパン ISBN-13: 978-4873115658 4.4章 縦の線をまっすぐにする タブ文字の幅を変えても崩れないソースコードの書き方 - livedoor Blog(ブログ) http://blog.livedoor.jp/sage_p/archives/51817456.html 注目ニュース 一覧 ◇ グーグル、Gmail にプライバシーを期待すべきでないと主張。 http://japan.cnet.com/news/service/35035978/ … 原告側も驚いた。秘書を例に出しているが、これでは仕事に使えない。 ◇ グーグル、Windows Phone 向け YouTube アプリを再びブロック。 http://japan.cnet.com/sp/allaboutms/35036026/ http://www.itmedia.co.jp/news/articles/1308/16/news022.html … グーグルの差別的な対応。 ◇ Samsung、クラムシェルAndroid、SCH-W789 を中国で発表。 http://www.itmedia.co.jp/news/articles/1308/15/news031.html … ガラケーに似た外観だが、キーボードとうまく融合できているか。 ◇ Windows 8.1、10月18日にリリースへ。 http://japan.cnet.com/news/service/35035968/ http://japan.cnet.com/news/service/35036031/ … 2ヶ月後。Skype がすぐ使えるようになる。 ◇ 新iPhoneは9月10日発表? http://www.itmedia.co.jp/news/articles/1308/12/news089.html … 1ヶ月後。 ◇ USB 3.1が発表、USB 3.0からなにがどう変わる? http://ascii.jp/elem/000/000/816/816743/ … 2倍強の高速化。 ケーブルは3.0互換。 内部的には大幅変更。 ◇ ドコモ冬モデルは、スリートップか。ソニー、シャープ、富士通が主力に。 http://www.itmedia.co.jp/news/articles/1308/14/news071.html … 今までのドコモに戻った感じ。 ◇ 集英社、ジャンプLIVE、公開10日で20万ダウンロード突破。 http://www.itmedia.co.jp/news/articles/1308/14/news073.html … それでも雑誌の発行部数の1割も満たない。 ◇ Apache Web サーバーのシェアが50%を切る。シェアを奪ったのは IIS。 http://japan.internet.com/webtech/20130813/3.html … IISだけというより、nginx にも流れたのが大きい。 ◇ Samsungが考える次世代のメモリアーキテクチャ。 http://pc.watch.impress.co.jp/docs/news/event/20130812_611320.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