生き様184. クソコードを憎んでたらいつの間にかクソコード製造機になっていた話
プロにネイルしてもらいました
ネイルしてきた!
— 白栁隆司@エンジニアカウンセラー (@ShirayanagiRyuj) January 26, 2023
黒のラメ、光の当たり方で色々なキラメキを見せてくれて、とても楽しい!! pic.twitter.com/w0wlVUMl7i
爪割れ防止に自分でネイルをしています。
いろいろ試したのですが、ハードジェルは2日ぐらいしか持ちません。
そこで、プロにやってもらったらどうなるのだろう?と考えていました。
とはいえ、ネイルサロンも男性が立ち入りづらい場所の一つ。
通りすがりにやってみようか、と思ってもコロナの影響でどこも完全予約制。
「男性OK」かどうかは店舗にもよるらしい、と噂を聞き…尻込みしていました。
そんな状況でしたが、男性OK!の個室ネイルサロンを紹介していただきました。
意を決して飛び込んでみたところ、上記の様なネイルになりました。
黒のラメが、光の加減で変わって素敵です。
ネイルしてから一週間ぐらい経ちますが、全然剥がれる気配はありません。
されてみて気付いたのが「爪に塗る」ではなく「爪の上に載せる」という感覚。
際まで塗っていたから、そこから剥がれやすかったんですね。
あとはこれがどれくらいまで爪の上に居てくれるのか。
じっくりと経過観察していきたいと思います。
クソコード、許すまじ!
世の中には「クソコード」が溢れています。
明確に「クソコード」の定義はありません。一種のスラングです。
ただ、経験則的に言うのであれば、
「読みづらい」「メンテナンスしにくい」「非効率的」
この3つの素養があるコードが「クソコード」と呼ばれます。
これに対する一般的な処方は「リーダブルコード」でした。
昨年でた「良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方」という本も、今後はその処方に入っていくと感じています。
話は逸れますが、上記書籍では「クソコード」ではなく「悪魔」と呼んでいます。
「そうか、我々は『悪魔』を召喚してしまったのか」
と、B級ホラー映画ごっこができそうで、この言い回しは好きです。
白栁は、新規開発系より保守系の経験を多く持っています。
その為、コードの保守性には敏感な方だと自負しています。
上記の本で勉強しているのも、その一環です。
「クソコードは滅んでしまえ!」と口外はしませんが、内心願っています。
とても、強く。
クソコード製造機になっていた
コードレビューを受けている、という話を以前しました。
自分だけでは気付け無いことも多く、学びの多い機会でした。
その中で、愕然とした事実が1つあります。
いつの間にか、自分が【クソコード製造機】となっていたことです。
白栁が【クソコード製造機】になってしまったロジックはこうです。
元々、別の人が開発していたコードを引き継いで1人で開発していました。
その中で、派生の機能・コードがどんどん増えていきます。
基本的には、元からあるコード群の雰囲気を継承する様にコーディングしています。
その上で、実験できそうなことがあれば、積極的に取り入れていました。
例えば、値オブジェクトやアトミックデザイン「風」のことです。
これらの殆ど(むしろ全て?)がクソコードを生み出す土壌となっていました。
まずは「一人でメンテナンスしている」こと。
他の人がコードを読まないし、自分だけが理解できれば大丈夫だろう。
そういう油断が生まれていました。
そして、元のコード郡の雰囲気どころか、既存の仕組みは壊さない様にしていました。
繰り返しの多いコードでも、その時の理解度や影響範囲で残していたものがあります。
そこに理解度が甘い実験的なコードが相まって、悪魔的なアンチ芸術オブジェができていました。
あれだけ憎んでいたクソコード。
そうはならないように気をつけていたはずのクソコード。
まさか、自分がそれを大量生産していたのです。
「私は、神を作ろうとして悪魔を召喚していた」
まさに、こんな気分でした。
リファクタリングしたい!でもできない!
そのクソコード達は、未だかなりの数が残っています。
一刻も早くリファクタリングして、全てを駆逐したい!
とはいえ、開発をしながらリファクタリングをすると、死ねます。
「一度書いたコードは変えない」
「運用実績のあるコードは、信用に値する」
白栁の中にある、この2つの考え方が邪魔しているのは確かです。
ですが、必要性も強く感じています。
安心してリファクタリングできる環境を整える。
それが、クソコードを駆逐する為に、次にするべきことだと考え、備えています。
無闇なリファクタリングは、それもまたクソコードを生み出すのですから。
以上!
コメント
おたみ
現在参加しているプロジェクトのコーディングルール(口伝、抜粋)
・コード管理には Git を使います。
・変更時は変更前のコードをコメントアウトし変更後のコードをその下に追記しなさい。
・変更時はどのような変更を行ったかのコメントをコード内(変更前のコードの上側)に追記しなさい。
はい?
エンジニアカウンセラー白栁隆司
To:おたみ さん
いつもコメントありがとうございます。
令和の世にも、Gitを導入していてもそういうことする現場があるんですね。
目から何かが飛び出しそうです。