トレタ Advent Calendar 2018 の1日目(初日から遅れ書いてる…)の記事として、コードの品質ということについての短文ポエムをだらだら書いてみる。
『Code Complete』、『リファクタリング』、『リーダブルコード』などなどコードの品質的なものを対象として書かれた書籍は結構あって、ほぼ同じようなことかいてあったりもするのだけど定期的に出版されて、自分もついつい買ってしまうたぐいの書籍の一つ。
これらの書籍でよくある分類はこういうやつ。
- 読みやすさ
- 理解しやすさ
- 美しさ
- テストのしやすさ
- メンテナンス性
- 堅牢性
- 拡張性
整理する、知るという観点ではこの分類大変よい。
ただ、結局このたぐいの内容は日常で実践する自分のスキルとしたいわけで「習慣化できるかどうか」にかかってる。習慣化するというのは、
- 一回やれば覚えれるような小さなこと
- 何度もその場面に出くわすこと
というのが結局ある。で、重要なのは後者で、最初に実践する際の少しのコストを惜しまずに出さないと一生コードの品質はあがらない。例になるコードが結構近くにあってそれを参考にコード書いてしまうこともままあるけど、その際に、もう少し良くならないか?を考えることがなければ、スキルは伸びないし品質も上がらない。
コードの品質については上に書いたように「習慣」でできることが多く、習慣化されてるとほぼコストがゼロなものも多い。となると、そこには品質とスピードのトレードオフ、といったものはない。できる人はコストかけなくてもできる、できない人は時間かけてもできないし、品質の意図的な上げ下げは上げたことがある人しかできない。
コードに限らず「品質」というのはなにかひとつで大きなものを生み出すことはなく、小さなことの積み重ね。当たり前のようにやってる毎日のことに疑問感じて、課題を探しに行って、改善に取り組むことでしか差はつけられないので、結局その瞬間瞬間で何考えながら生きていくかってことになる(極端)。
疲れも溜まってるし眠いしで深夜に書き始めたらまったくとりとめない文章になったけど、書いてなんぼのアドベントカレンダーなのでこれでよし。
今年は公私共に人生最大級で忙しく、またブログを書くのが年1になってしまっており由々しき事態だけど、来年はいくつかの状況を打破して自分の時間を少しでも多く技術に投資できるように画策して、ブログも書いていきたい。