質の良いソースコードは何をもたらすのか
「質の良いソースコード」と言うキーワードから、どのようなソースコードを思い浮かべますか?
人それぞれ、千差万別かと思います。
コメントは書かれていますか?
ステップ数はどのくらいでしょうか?
そもそも、「そんなものは存在しない」でしょうか?
はたまた、「ちょっと何言ってるかわかんない」となるでしょうか?
私は、明確な定義を持っています。
今回は、質の良いソースコードの定義を紹介させていただこうと思います。
結論
結論を先に記述しますが、「質の良いソースコード」は
実装工数の削減
保守工数の削減
エンジニアの育成、スキル向上
をもたらします。
ピンと来ないかもしれないので、掘り下げていきます。
「質の良いソースコード」とは
私が考える「質の良いソースコード」とは、
⦿ 可読性が高いソースコード
⦿ 再利用性が高いソースコード
を示します。
可読性とは
可読性とは、処理の目的や、処理の流れに対する理解のしやすさのことを指します。
可読性が高ければ、
☑ 不具合解析が容易になり、保守工数の削減に繋がる
☑ 第三者が理解しやすいことで、プログラムを複数人の共通認識にできる
⦿ 「その人がいないと困る」と言う事態にならない
☑ 要求仕様とプログラムとの乖離を検出しやすい
⦿ プログラムが間違った方向に組まれてしまうことを防ぐ
⦿ 仕様変更にも強くなる
と言った効果が現れます。
再利用性とは
再利用性とは、ある時点で書かれたプログラムの一部または全てを、後に別のプログラムを書く時に利用することを指します。
冗長な作業に費やす時間とエネルギーを節約する、典型的な技法です。
再利用性が高ければ、
☑ 開発チームの資源として蓄積していくことで、複数のプロジェクトに流用することができる
☑ ある時点で動作確認が取れているため、品質が保証されている
⦿ 実装、および動作確認の工数を削減することができる
と言った効果が現れます。
必要な考え方
「質の良いソースコード」を書くためには、次の考え方が必要になります。
⦿ ソースコードに明確な意思を込める
⦿ コメントをしっかり書く
⦿ 第三者に見せることを前提する
ソースコードに明確な意思を込める
普通の文章のように、書き手の意思が読み手に伝わるように心がけます。
■ 変数名の命名規則
・自分ルールでも、規則化されていることが伝わればよい
■変数のスコープ(有効範囲)
・変数のスコープはできる限り小さくする
■関数化基準の明確化
・共通で使用する可能性が高い処理を関数化する
・仕様変更によって変更が発生する可能性が高い処理を関数化する
■クラス作成基準の明確化
・システムを構成する要素を適切にクラス化する
・クラスの役割が明確になっている
■処理をまとめる(ブロック化)
・処理をまとめることで、俗に言うスパゲッティコードになることを防ぐ
・後で関数化しやすい
・記述位置を変更する場合、ブロック単位で移動できる
意思が伝わることで、ソースコードが格段に読みやすくなります。
コメントをしっかり書く
コメントは、設計工程とテスト工程を紐付けるものと位置付けます。
設計書に書くべきフローチャート(振る舞い)をコメント(人が理解できる文章)として書くことで、設計工程と紐付けます。
☑ 振る舞い=テスト項目となるので、テスト工程とも紐付く
☑ JavaDoc、YARDなどのドキュメント生成ツールによって、ドキュメントを生成できる
☑ ドキュメント生成ツールの規約に沿って、クラスヘッダー、関数ヘッダーを記述する
実際には生成しないとしても、規約に沿って書かれていることで理解しやすくなり、可読性が向上します。
第三者に見せることを前提とする
ソースコードこそ、プログラマーが最大の力を発揮して作るモノです。
これに力を入れずして、プログラマーは名乗れません。
ソースコードはシステムの核となる要素であり、だからと言って見えなくて良いものではありません。
また、その場しのぎで作られた使い捨てされるものでもありません。
第三者によって解析・改修され続け、時にはお手本にされることもあります。
そのようなモノが、見づらく汚いものであってはいけません。
インターネットのサイトや印刷物のように、誰が見てもわかりやすく、美しいと感じるものでなければなりません。
いついかなる時でも、ソースコードを見ながら説明できるようにしておかなければなりません。
それほどの想いを持って、ソースコードを書くべきです。
最後に・・・
先に述べた結論のとおり、「質の良いソースコード」は
☑ 実装工数の削減
⦿ 再利用性の高さにより、流用可能なリソースを蓄積できる
☑ 保守工数の削減
⦿ 可読性の高さにより、不具合解析が容易になる
⦿ そもそも品質が向上するので、不具合の発生頻度が低下する
☑ エンジニアの育成、スキル向上
⦿ 可読性の高さにより、初心者でもコーディングを学習しやすくなる
⦿ 良いコーディングパターンとして、ひとつの指標(参考例)となる
をもたらします。
プログラマーが書くソースコードこそが、システムの核となる最も重要な要素です。
ソースコードと真摯に向き合うことが、プロジェクトを成功に導く最善の方法だと私は考えます。
オンサイトではエンジニアチームのメンバーを募集しています!
少しでも興味のある方は採用サイトからご連絡ください。
リードエンジニア
1997年からエンジニアやってます。C言語から始まり、様々な言語を経験してきました。
生涯プログラマーをモットーにしています。
コードは見やすく、わかりやすく、シンプルに。
流行りに取り残されないように、日々精進していきます。