どうせ押しつけるならマシな方にしてほしいかな、と

下のコメント欄より。

kokogiko 『> これをファイルに落とさず、そのままshellからコピペした場合その位やりそうな輩ですがw(>私)
Danさんが書かれているのは、「人のコードを直したり、人にコードを直してもらったり」するケースですから、上記のような事をするのはDanさんの事ではないのでは?私のような輩がshellからコピーしたdiffをDanさんに渡したような場合、それを受け取ったDanさん側が苦労すると。その苦労を軽減するために、相手にdiffはファイルに吐けと強制するか、或いは自分の方でTabはスペースに置き換えておくか、のどちらかの対策をとるなら、相手にやり方を押し付けないTabをスペースに置き換えておく、方を選択したと受け取れるんですが...。』 (2006/04/30 08:32)

私もDanさん自身がShellからコピペなんてことをするとは思っていませんが、タブ(これもコントロールコードのひとつ)が混じるとおじさん混乱するから全部スペースに変換してくれよ、と言うのと、そもそもコードにはコントロールコードが混じっていて当然なんだから(タブだけでなく、改行だってコントロールコードですし、日本語などのデータだってものによっては悪さをするんですから)Shell経由のコピペなんてするな、と言うのと、30代後半のおじさんが言うセリフとしてはどちらが正しいか、どうせ嘆いてみせるならどちらを先に嘆いてみせるべきか、という話。ましてDanさんはメディアへの露出も高いうえに、勝手に添削なんてコーナーをつくって他人のやり方をあれこれ直していこうとしている。いわばベストプラクティスを伝道できる立場にいるのにはき違えたことを言っているから「まさかあなたもそんなトンチキなことをするのか?」と嘆いてみせたわけです。

Six ApartのせきむらさんもDanさんと同じように、他人のコードを直すときにスペースが入っていたり、タブが入っていたりするとタブを書いたヤツの方に腹が立つなんてことを書かれているのですが、私から見ればスペース4であれスペース8であれ勝手にオレオレインデントを押しつける人の方がよほど面倒な相手です(私もタブ幅は4にしていますが、スペースでインデントするならせいぜい2もあれば十分。4もタイプするのは正直面倒です)。ただ、チームを組んで仕事をするなら真っ先にその辺の規約を確認するべきなんであって、その辺の空気を読まないコードを書いた人こそ叩かれるべきだろうとも思いますし、Six Apartが過去その辺のコーディング規約を徹底してこなかったのであれば、それは昔のツケを払わされているだけなんだろうな、と

ただ、インデントをタブで、というのは何の根拠もなく言うわけじゃない。機械処理するんだったらスペース4とかスペース8とか並ぶより、タブの数だけでインデント処理した方が明らかにすっきりするし、チームが変わってポリシーも変わったときにも対応しやすい。大量のスペース4コードを持っている人が急にスペース2とかスペース8のチームに放り込まれたら、やっぱり変換コードのひとつも書かないといけないし、それはあまりに無駄な一手間。

それでも初心者にはタブの挙動がわかりづらかろうし、初心者にゃエディタの設定なんてできようはずもないからスペース推奨した方がいいと言うなら、それはそれで仕方がないバッドノウハウなんだろうなあとは思いますが、曲がりなりにも本職のプログラマがそんなことでいいのか、それでコーディングにMS Wordを使う人たちを笑えるのか?――と、へそまがりな私としては言いたくなる。

ま、Perlプログラマだけの問題じゃないんですけどね。「入門vi」あたりにも

タブストップを変更するのはあまりお勧めできない。たしかにviでは任意のタブストップによってファイルを表示できるが、ほかのすべてのUNIXプログラムではファイル中のタブ文字が依然として8桁単位のタブストップに基づいて展開されるようになっているからだ。タブストップが8桁単位になっているのはUNIXの実情であり、それに合わせるべきだろう。(p.143)

なんて書かれているくらいで、たぶん日頃からタブとスペースを意識して使い分けている人なんてごく一部でしかなく、ほとんどの人はエディタのデフォルト設定まかせで適当に書き散らしているだけでありましょう(そもそもタブや改行コードを可視化している人がどのくらいいるのだろうか)。Damianセンセもただタブ4にしろと言うだけでなく、ご親切にもそうするためのviとemacsの設定ファイルの書き方まで指南しているくらいで、エディタ的に不自然なことをしているのはお互い承知しているのですよ。

DamianセンセにしろDanさんにしろ、そこまでさせるんだったらもう一歩踏み込んでくれればなあ、と思ったわけです。