【再度、考える】綺麗なコードをかくエンジニアは、なぜ迷惑なのか?

しかし、大抵の同僚は綺麗なコードを書く開発者と仕事をしたいと思っています。
汚いコードは百害あって一理なし。
綺麗なコードと汚いコード。どちらのプログラマと一緒に働きたい?~可読性を意識したプログラム言語はRuby, CoffeeScript, Elixir #Ruby #CoffeeScript #Elixir|CodeIQ MAGAZINE


こういうのを見かけて、
以前に「キレイなコードが良いというエンジニアは迷惑千万!? 」をかいたけど
上記では、エンジニアには共感されない、分からないんだろうなぁという感じがしたので
再度、考えてみました。

迷惑なキレイなコード

結合度が高い
キレイさにこだわり、可読性が犠牲になっている

上記2点にあるのではないか?
つまり、だれがみても綺麗なコードだとは言えるけど
それは、一見きれいだけど、実際にはダメなコードという話になろうと思います。

上記2点を別の言葉で言い換えれば

・コメントが一切ない
・無理して短いコードを書こうとする
・無理して似たコードをまとめようとする
・知識や技術を見せつけるようなコードをかく
・自身よりもスキルのひくい人が読んでもわかるようにかかれていない
・汎用性高くかかれてるが、仕様変更の入るスキがなぜかないコードを書く

汎用性高い=個別の仕様を含むのを嫌がるというはなしかも。


迷惑なキレイなコードをかくエンジニアの性格

性格がなぜかコードに現れるんですね。上記のようなコードを書いてる人と付き合うのはそれなりの覚悟がないと無理かも。

・自身よりもスキルの高い人、自身が尊敬する人の言うことしか聞かない
・自身に絶対的な自信を持っている
・人の話を聞かない、人の話を理解しようとしない
・妥協という言葉は悪
・原理原則を大事にする
・悪いのは、スキルの低い人間、技術を評価しない人間だという思い込みがある
・偏屈

柔軟性のあるコード

・柔軟性のあるコード
・柔軟性のある人付き合い

完成された美しさって、柔軟性とは相性が悪いことが多いとは思う。

言葉遊びでいいのなら、完成された美しさは、少しでも変更すると汚くなるので、変更を許されない状態になるのかも。

個別仕様に依存しない話で、綺麗なコードを論じている場合

たぶん、その路線がダメなんだと思う。

プログラムコードに、その人らしさが表れるのか?

それはわかりませんが、
このガチガチにかたいコードは、この人だろうなぁとか
この緩いコードは、この人だろうなぁとか
見続けていたら、やっぱりそういうのがありそうな気はします。

仕様変更に強いコードといっても、そこは性格が合わられるわけで
自身が修正することを想定している人と
自身よりもレベルの低い人たちを想定している人たちとでは
やっぱり、違うんですね。

それを人間性とかに結びつけるのはよろしくないんだどうけど、
擬人化みたいに感じることはあるとは思う。

綺麗なコードなのに、クソコードと周りから思われたらオワリ

・ひどいコードは何やってるか分からない
・ひどいコードが何やってるか分かっても、なぜそうなってるのか、そこを変えるとどうなるか分からない
・ひどいコードは新たな変更に耐えられず書き直されることになる
・ひどいコードを書き直すには、ひどいコードがどあなっているか理解し、どこを変えるとどうなるのか理解する必要がある
・ひどいコードはたいていひどいテストコードが支えていて、テストコードがあったとしてもひどいコードと同様の問題があり、頼れるものが何もない
なぜひどいコードを書いてはいけないか - hitode909の日記


今回の僕の書いた内容が理解される?ためには
「スキルが低いから、どこを変えたらいいかわからないんだよ」というのが通用するかどうかというのが
キモかなぁと思う。

どんな理由があっても、煙たがられたら、それは「よろしくないコード」だと思う。

・正論
・大義
・理想

どおりだとしても、・・・。


関連記事

グローバル変数、スパゲッティコードと聞いて、ダメだろうと思うのは素人?!

スポンサーリンク

『【再度、考える】綺麗なコードをかくエンジニアは、なぜ迷惑なのか?』へのコメント

  1. 名前:SIで毎日うんコードと格闘中のプログラマ : 投稿日:2017/09/06 20:53

    迷惑なキレイなコード

    ・結合度が高い
    ・キレイさにこだわり、可読性が犠牲になっている

    なんか根本的に、わかってないと思われますが、そのようなコードは全くきれいなコードではないような、、、

    普通、きれいなコードとは疎結合で可読性がつかいはず

    ショートコードテクニックはキレイなコードてまはないし、密結合な時点でそれできれいと本人が思っているのは正直レベル低いような、、、

    何が言いたいかって例にあげられてるのはただの自己満足こーどのことでは?

  2. 名前:管理人 : 投稿日:2017/09/06 23:30

    密結合かどうかは、SIerの場合は、業務仕様を読み切れるかどうかと遊びをどの部分に持たせるかによると思うので、純粋な技術力(コーディング力)とは別のところにあるのではないか?と思います。

    >そのようなコードは全くきれいなコードではないような、、、

    言葉の定義次第だと思う。
    業務仕様を知らない人たちがみたら、キレイにみえたら、それはきれいなコードなのでは?

    実際、おかしな業務仕様がなければ、おかしな仕様変更を想定しなければ、キレイなコードというのは存在するでしょう。
    業務仕様の方をかえると、もっとコードがキレイになるというときは、どう考えるかにもよるかと思う。

    どちらに最適化するかによると思う。

    >何が言いたいかって例にあげられてるのはただの自己満足こーどのことでは?

    自己満足かそうでないかは、見分けつかない時も多いと思います。
    つまり、都合のわるいものは、自己満足コードだとレッテルを貼ればよいので・・。

    まあ、逆に、スキルの低いコードっていうレッテルを使う場合もあると思う。

コメントを残す

メールアドレスは公開されません。
また、コメント欄には、必ず日本語を含めてください(スパム対策)。