SSブログ

書かれるコードが難しすぎる [プログラミング]

世の中には、わかりやすいプログラムとは何か?と考える間も無く粗雑なコードのコピペの連鎖で作られているプログラムがあることは知っている。
幸いにも最近はそういう拙くてひどいコードを見ることはない。

ただ、頑張ってちゃんと書こうと思うあまりに一見して良さそうに見えて、とてもわかりづらくなっているものに出会うことはある。

リストの内包表記や lambda、 map、 reduce を多用しているのは
「それ、ループのがわかりやすくない?」
と思うし、
「デザインパターン言いたいだけやろ!」
って思う細切れになって見通し悪くなってるだけのもある。
雰囲気は(そういう名前ついてるし)なんとかっていうパターンなんだけどいざ機能を修正しようとするときにどこをどう直していいかわからない。
Python はリストや辞書やセットの表現力が高いから、過剰にオブジェクトの継承や委譲に頼った書き方しないほうがわかりやすくない?
もちろんクラスの継承や委譲のもすることはあるんだろうけど。

やたら generator を使っているが、処理のどこかでリストに評価されてしまっているので「それ、リストで返したほうがよくない?」と思うことのほうが、「うまく使ってるねー」って思うことより多いかも。

デコレーターを使っていることで、こっそり実行されてたり副作用があったりしてわかり難い不具合を発生させたりすることもある。ちょっと便利機能をデコレーターで実装するのはやめてもらいたい。
作りの悪いのは「(副作用があるので)書く順番が決まっています」みたいなものもあって、地雷になってる。デコレーターを作るのは頭がよくてセンスの良いフレームワーク開発者だけにしてもらいたい。

Django でいうと、一例として、やたら select_related や values_list() を使っていてモデルでのアクセスを台無しにしてるのもある。
パフォーマンスがよくなると思ってだと思うけど、
「読みづれーだろ。計測したのか?必要なのか?」
・・・なんか、動いてしまっているのに、 values_list() 使わないように書き直してって(僕は)言いづらいけど、直す時に大変になる。
きっと、どこかのブログの解説で、「こういう風に書いたほうがパフォーマンスがよくなる」みたいなのを読んだんだろうなぁ。

Python で書くと、ある程度誰でも同じようなコードになって読みやすい、って言われるけど、人は、ありとあらゆるコーディングテクニックを使いたくなるものらしく、意外とそうでもないな、と最近思う。

Go言語は、21世紀に発明されたのに、クラスもリストの内包表記もジェネリックプログラミングも例外処理もなくて、デフォルトパラメーターもキーワードパラメーターもない。最初に見た時は
「こんなんでいいの?」
って思ったけど、それでも必要な処理は意外と書けるし、むしろそういう機能がないところがいいんだろうな、と思う今日この頃。
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

コメント 0

コメントの受付は締め切りました

Facebook コメント

トラックバック 0