2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

結論

リーダブルコードリファクタリングを読むべし。

image.png

背景

私は 日本の伝統的な 製造業でソフトウェアエンジニアを担当しています。
トラディショナルな日本企業ゆえ、クリーンなコードを書ける人材は絶滅危惧Ⅰ類です。
このような人種が絶滅することを防ぐべく、今回、筆を取らせていただきます。

私が出会ってきたクソコードたち

これまでこのようなコードを観測してきました。

  • 理解不能な命名がなされた関数や変数が大量に存在しているコード
  • スネークケース、パスカル、キャメルなどが混在しまくっているコード
  • 一切使われていない関数や変数が大量に存在しているコード
  • コメントが一切書かれていない8,000行を超えるコード
  • if文が3〜4層は当たり前のように入れ子しているコード
  • ゴリゴリにパスワードをオンコードしているコード
  • ORマッパー(TypeORM)を導入しているのにも関わらず、わざわざDBクライアントのライブラリを入れて、ゴリゴリSQLクエリをオンコードしているコード
  • Nuxt3(Vue3フレームワーク)を導入しているのにも関わらず、Vue2で書いているコード

ああ、思い出したら腹が立ってきた・・・

そもそもなぜクソコードを量産してしまうのか

コードの書き手が、そもそも「クソコードを量産していることを認識をしていない。」 というのが私の仮説です。
では、なぜ認識できないのでしょうか。
それは、「クリーンなコードを書こうという強い意思や余裕がない。」 ということに起因しているかと思います。
日本における開発はウォータフォール型が主流です。(最近は徐々にアジャイルも浸透してきたけど…)
予算とスケジュール、品質を予め決めた上での開発の場合、決定した要件から外れてくると、ユーザと開発者の双方がとても不幸になります。

  1. 予算超過やスケジュール遅延によって、ユーザは失望する。
  2. 開発者は予算や納期を守ろうと品質の悪いクソコードを書き続ける。
  3. 品質が悪化することで、バグが発生し、納期も予算もさらに超過してユーザと開発者は絶望する。

このような地獄を経験したユーザや開発者の方、いらっしゃいませんか。(私とすぐ仲良くなれると思います。)
こんな地獄の中で、リファクタリングする意思や余裕が生まれるでしょうか。
なかなか難しいんじゃないかな、と思います。

クソコードを量産しないために

さて、ここまで読んで頂いた方の多くは、クソコードによって苦しめられた経験のある方だと思います。
新たな被害者を生まないためにすべきことは 「クリーンなコードを書けるよう努力を積み重ねる」 ことだと考えています。
では、どんな努力を積み重ねればよいのでしょうか。
私からのご提案です。

リーダブルコードリファクタリングという本に目を通してください。

どちらも原書(洋書)を翻訳しているのもあって、多少、表現がわかりにくい部分もあるかと思います。
しかし、コーディング例が豊富にあるため、まずはこの本を読んで、真似をしていくことはできます。
「真似る」は「学ぶ」。ぜひ、ご一読ください。

おわりに

たまたまアドベントカレンダーで、このようなイベントを見つけたのをきっかけで執筆させていただきました。
このようなきっかけをご提供いただいた、Qiita様、スポンサーのカオナビ様には多大なる感謝をもって、本稿の結びとさせていただきます。
読者の皆様も読んでいただいて誠にありがとうございました。

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?