BLOG

2021-07-26 テクニカル

コーディング規約について考えてみた。

どうも、畜産ペンギンです。

 

オリンピックが始まりましたが野球は勝てそうでしょうか。

全然わかりません。

 

今回はコーディング規約について語って行こうと思います。

未だに胸を張って機能していると言えたプロジェクトは経験無いんですが、なんとなく必要性は感じている。

という事で本当に必要なのかも含めて考えてみました。

 

目次は以下の通り。

 

目次

・目的

・何故機能しないのか

・どう機能させるのか

・まとめ

 

目的

結局の所、メリットをそこまで大きいと思っていないから頑張って機能させようとしていないのかなと。

実際無きゃ無いである程度は何とかなってますしね。

 

とはいえ現状に甘えず尻を叩く為にまずは目的とゆーか出来たらどんな良い事を起きるかを考えていこうかと。

 

・可読性の向上

まずは読みやすいという部分ですね。

統一感が無く書き方がバラバラだとまず読むだけで大変です。

例えばDBに使用するコード値は特定の定数クラスに記載するルールが何となく暗黙的にあったとします。

しかし知らない人がコード値を追加する際別のクラスに書いてしまいました。

後で他の人が追加したコード値を確認しようとしたさいに定数クラスを見に行ったが記載がなく、どこに書いてあるねんとなります。

 

・品質の向上

品質の定義を考えるとややこしくなりそうですが、一旦バグが少ない、またバグが起きにくい作りの事を品質が高いとします。

可読性の向上の時と同じように考えると、例えばDBに使用するコード値を別々のクラスに重複して定義してしまったとします。

このコード値を修正する際、一つのクラスのみコード値を修正して全て修正が完了したと勘違いし未修正のバグを混入してしまいます。

 

・プログラマ自身のスキル強化

まず、経験が浅いメンバーでも規約に従う事で一定品質の担保が期待できます。

ただここで大きいメリットとなるのは、規約通りに書かれたコードの品質以上にプログラマ自身が良いコードの書き方を学ぶ事が出来るという事だと思います。

ロースキルのプログラマですと最初の内はどうしてもコードの意図もよくわからずなんとなく既存のコピペをするだけで終わってしまいがちです。

規約によりどういった意図やルールで書かれているかを理解するきっかけになります。

 

ざっとこんな感じですかね。

書いてみると当たり前だけど考えてみると結構良い事なんじゃないかって気がしてきました。

 

なぜ機能しないのか

規約がないプロジェクトだと、考えるの大変だよなぁとなったり。

規約があるプロジェクトだと、わざわざちゃんとコードと突き合わせて確認してらんないよなぁとなったり。

こんな感じでなし崩しになっていくのはなんででしょうと少し考えてみました。

 

・規約を作る能力が無い

そもそも規約を作る為の知識や経験が無く、作れないというパターン。

 

・規約が読めない

分量が多すぎる、どこにどういったルールがあるのかわかり辛くくて読んでられない、もしくは読み手が理解するスキルが無いいうパターン。

 

・規約に必要性を感じていない

規約に書いてある内容が可読性や品質の向上等に貢献できている内容でない、または読む側が重要性を理解出来ていないパターン。

 

時間的問題等、他の要因を除けばまぁざっくりこんな感じでしょうか。

これらをどう解決すればいいか考えていきたいと思います。

 

どう機能させるのか

最初にいきなりガッカリな事を言うと、正解は無いと思います。

まぁ当たり前っちゃ当たり前なんですけどプロジェクトによって環境や人等全て違うので正解は無いという事ですね。

 

唯一特効薬的な手法は、使えるツールがあれば使いましょうって事でしょうか。

結構最近はコードのチェックをしてくれるツールがありますし、今後も進化していくと思いますので使える物は使いましょう。

 

後は正直現状自分の理解だと、一種の心構え次第かなと。

ざっくり言うと「完璧な規約は作れない」し、「規約に書いた事全ては守られない」ので、最初から高品質な物を求めるのではなく定常的に規約を改善していく取り組みをしていく方が重要かと。

 

まとめ

結局の所、重視すべきはコーディング規約に限らず何事も改善していく取り組みですかね。

ただ改善する対象としてコーディング規約と言うのは本人及びチームの技術力向上として良い題材になると思いました。

 

今回はここまでです。

 

さようなら。

 

The following two tabs change content below.

畜産ペンギン

主にネットワーク系、開発系を経験しているエンジニアです。 技術系を気まぐれに書いて来たけどそれ以外も気まぐれに書いていこうかなぁと。