2015年12月14日月曜日

ソースコードを読むときにコメントを除外して読みたい

すでにある大量のプログラムのソースコードを読まなければならないことがある。そのソースコードにはプログラムの実体以外に大量のコメントが書かれていることがある。

コメントは関数ヘッダであったり、処理の流れであったり、注意すべきことであったり、改訂履歴およびその改訂箇所の始まりと終わりを示すものであったりする。それらは「コーディング規約」に基づいて書かれていることが多い。

時間が流れてそのソースコードの担当者が代われば、そのコメント記述の仕方も違いが生じ、二人、三人と代わればコメントの統一感がなくなってくる。コメン トがソースコードの中で大きな顔をしていて、ソースコードを読みにくいものにしている。ソースコード中のコメントの割合が50%を超えるものだって出てく る。

コメントを見ずにソースコードを読みたくなってくる。

わたしはソースコードを読むときにはエディタ Emacs を使っている。Emacsにhide-comnt.el をインストールするとコメント部分を非表示にすることができる。もちろん非表示から表示にもどすこともできる。

だが、コメントが非表示になると、
コメントがなかったものとして、行が詰められてしまう。これはわたしの欲しい機能ではない。わたしがほしい機能は、ソー スコードそのままでコメントが見えなくなり、表示・非表示を切り替えたときにコードそのものの表示行位置が変化しないものだ。

Emacsでは、他のエディタと同様に、ソースコードの言語にしたがって構成要素にしたがって色づけがされる。コメントは赤茶色で表示される。
そこで思いついたのがコメントの色を無色にしてしまうこと。そうすれば最も簡単に望む機能が得られるのではないか。

調べてみると、コメントの色は comment-color という変数で設定されていて、その値は brown であった。無色ではコメントがあったところと何もない空白との区別がつかないから薄い灰色にすることにした。

そしてそれを切り替える。切り替えには C-x x を使う。一回目で非表示(薄い灰色)へ。二回目で茶色へ。

しばらく使っているけど、なかなか調子がいい。

その elisp がこれ。このコードにコメントは付けない。

(defvar comment-color "brown")
(defun my-toggle-comment-color ()
  (interactive)
  (setq comment-color
        (if (equal comment-color "brown") "light gray" "brown")
        )
  (set-face-foreground 'font-lock-comment-face comment-color)
  )
(global-set-key (kbd "C-x x") 'my-toggle-comment-color)

0 件のコメント:

コメントを投稿