ESLint: operator-assignment の「くだらない話」

どうにも ESLint を「読んでると」色々思い出してあかんわ。

require or disallow assignment operator shorthand where possible (operator-assignment) はこれは何を言っているかと言うと、「+= などのショートハンドを「使えるときは必ず使うべし」 vs 「使うことまかりならん」」の制御。

「チームで決める」なら、原則「どっちを選んでもいい」という類のもので、ただ特に C++ 脳が発達していると、「ショートハンドにしかない効率に関する効能」があるのを知っているので、どうしたって「+=」には愛着が沸く。(というか C++ の場合はその件があるので、どっちかというと「開発者の好みでは決めちゃダメ」なんだけれど。)

今話題にしたいのはそういうことではなくて。身近にいた後輩をちょっと思い出してな。

その「彼」は、「+= が苦手」だ、と「口で言っていた」、ということだけでは飽き足らず、人が書いたコードにまでとやかくケチを付けるように「改善」しまくっていた。はっきり厳重に注意しておくが、「チームではこれをしては絶対にいけない」。まず「ルールがあるのかないのか」である。ないならまずは「作れ」。作らないのに「オレが正義」という行為だけは、絶対にやってはいけない。そもそもそんなことをすれば「当たり前のように喧嘩になる」。

ルールがない場合に、本来チームメンバーとしてどう振舞うべきか、というのは、「思うところがあるならルール作りにそもそも参加すべき」だし、そう「出来ない立場にある」ならば、自分の正義を「隠れて」発揮してはいけない。はっきりと皆がわかる形で「表明出来ない」正義は、そんなものは正義ではない。それは「自己満足」に過ぎない上に、「人の気分を害するだけの迷惑な行為」である。

C++ での性能の件を除けば、ワタシはこういう:

1 var longname_X = ...;
2 var longname_Y = ...;
3 var longname_Z = ...;
4 
5 longname_Z = longname_Y + 1;
6 // ↑longname_Z = longname_Z + 1; と書きたくて手が滑った

みたいなことをほんとに頻繁にやらかすので、ショートハンドが書けない言語では頗るストレスがたまる。まぁ「だから絶対ショートハンドだけが正義だ」とは思わないけれど、「同じ変数を左辺と右辺両方に2回書かないで済む」メリットはありがたい、と思っている。

けれども、例にした後輩のように、「直感的に理解しにくい」と思う者がいるのも確かな事実で、そういうことが問題になるようなチームならば、別にそちらを正義とする考え方は否定されるものではない。大事なのは「決めたら全員が従う」というただ一点だ。好みだけで自分だけは違うことをする、ということをしてはいけない。