タブーも場合によりけり

Pocket

ブログを月に2回書こうと思ったのですが、時間がなくて、なかなか書けないものですね。
とくに、仕事のブログなので書く内容には非常に気を使いますし、時間も普通のブログの3倍以上かかります。
でも、これも仕事と思えば書かなくてはいけない!と、自分に鞭打って書いてます。苦笑

さて、このブログには細かい技術的な事は少なくしようと思ってました。

というのも、一般的なユーザー企業の方に見て頂いて、
「そうか、犬塚はこういう人間なんだな。」
と思ってもらうことが主な趣旨だったからです。

もともとバカ正直な人間なので、ちょっと書きすぎ!?みたいなブログも書いてしまうことがあるのですが、それでも、建前よりも本音を書いて、自分という人間をよく知って頂いた上で仕事を任せて頂いた方が、お互いやりやすいだろうという思いもあります。

***

前置きはさておき、ある社長さんのブログだったかメールだったかでプログラムの書き方・作法についての記述があり、とても納得した記憶があります。

そこで思ったのが、「プログラムを組む上でのタブー」も「場合によってタブーでなくなる」場合もけっこうあるよなあと。。。

プログラムは言語ですから英語のように「文法」というものがあります。
当然、「文法ミス」をするとマシン(パソコン)が読み取ってくれませんからシステムが動きません。
少しの文法ミスで動かなくなるので、文法通りに正しくプログラムを書くことは必須です。

が、しかし、ここで言うタブーは、その文法ミスではないのです。

わかりやすく言えば、
「それは日本語じゃないよ、正しい日本語使おうよ。」
というようなニュアンスです。
 
つまり、誰が読んでも何が書いてあるのわかる、マナーの良いプログラムを書かなければならないのです。

若者言葉のように略しすぎてもダメですし、話ベタな人のように言い方が回りくどくてもダメ。
話が長すぎるのもダメですし、話の内容が行ったり来たりし過ぎるのもダメなのです。

文法ミスではないのでマシンは読み取ってくれるのでシステムは動くんですが、でも、それを人間が見た時にわかりにくいというものが、ここでいうプログラム上のタブーなのです。 (もちろん、性能上のタブーであるとかタブーにもいろいろ種類がありますが、今回はそこまで触れません。)

プログラミングはプログラマー一人だけの仕事ではありません。
プログラムを書いた人以外の人がプログラムを修正しなければならない時もあります。

それどころか、複雑なプログラムの場合は、自分が自分の書いたプログラムをわからなくなる時もあるのです。
なので、プログラムを書くときは(自分の含めて)他人の目を意識して書かなければならないのです。

過去に何度か、本人もわかんなくなったプログラムのメンテを任されたことがありましたが、(自分は読解力はある方だと思うのですが)、それでも他人のプログラム、とくに投げ出されたプログラムは読みにくかったです。苦笑

***

この前の社長さんのブログでは、「同じような処理を一つの関数にまとめずに敢えてそのまま別々に残しておく」こともアリだ、というものでした。

通常は同じような処理が二つあったら、一つの関数にまとめた方がメンテナンスの際に二度手間にならずラクできます。
片方修正して片方修正し忘れるということもないので、バグ防止にもなります。
でも、この少しのラクのために、ひとつにまとめてしまった時の融通の利かなさを甘受せねばならないのはどうか?と疑問を投げかけるわけです。

その理屈の詳細は省きますが、うーん、確かにその通りだと思いました。
 
***
 
ちなみに、「長すぎる関数」もタブーとされてます。

自分も最近、我ながら、「ながっ!!」っていう関数を書いてますので大きな声では言えないです。
でも、個人的には「長すぎる関数=悪」と、すぐにはならないのではないかと思うのです。

昔、会社勤めのころ、プロジェクトのメンバーにこういう質問をしたことがあります。
「長~い処理(関数)は、細かく分けた方がいいか、それとも、敢えて分けないほうがいいか、どっち?」
答えは、人それぞれでした。

なぜ細かく分けるとダメなのか聞いてみると、細かく分けると、あっちこっち視点が移動して、前に何が書いてあったか忘れて、「戻っては読み返し」を繰り返さないといけないから、イライラするとのことでした。

国語の時間で難しい評論文を読むとき、そうなりますよね。笑

うーん、これは一理あるなと思ったのです。
自分は、実は細かく分ける派なのです。
その方がデバッグしやすいし、なんか、プログラム全体が整理された気になるからです。

でも、それを聞いて、あまりになんでも関数化して分けるのも考えものだなと思ったものです。

***

このように、プログラムにおいてはタブーがあるのですが、ケースバイケースだと思うのです。

そして、プログラムを書くには他人への「思いやり」というものも必要になってくるわけです。

実際のところ、エンジニアには取っ付きにくくて、コミュニケーションが苦手な人が多いです。
そう言う人はプログラムも自分勝手で読みにくいプログラムを書きがちです。
自分が読めるから問題ないだろ?と傲慢なわけです。

そうならないように、気をつけなければいけません。

Pocket