Javaでコーディング規約を作成して高品質のプログラムを作成しよう

2021年6月23日水曜日

Java

t f B! P L

スポンサーリンク

コーディング規約とは

システム開発は、その規模に応じて複数名から多い時は数百名のプログラマーが開発に携わります。

コーディング規約とは、特定のプロジェクト内においてコードの書き方や、クラス名やメソッド名などの命名ルールを規定することで、多くのプログラマが関わるシステム開発のプロジェクトにおいて、ソースコードの品質を統一するために定められるルールです。

システム開発の現場では、基本的にはこのコーディング規則が存在し、開発者はこの規則に沿ってプログラムを作成していくため、これからプログラマーを目指すのであれば、こういった規則が存在することについて知っておきましょう。

代表的な Javaのコーディングルール

Javaの代表的なコーディング規約には、次のようなものがあります。

Javaの開発元である Oracle社が公開しているコーディング規約です。ファイル名の規約から、コメント書き方、空白の入れ方など、Javaのコーディングスタイルに関する規則が掲載されています。

永和システムマネジメントが公開しているコーディング規約です。Oracle社が提供しているコーディング規約は英語ドキュメントですが、こちらは日本語のドキュメントです。

Google社が公開しているコーディング規約です。DRYの原則に基づいたルールで、上の2つのコーティング規約に比べて、必要最低限のコーディング規約だけが書かれているイメージです。

『Point』
ここで挙げたコーティングルールを、開発プロジェクトにそのまま適用するのではなく、必要なルールを追加で付け足したり、逆に不要な部分の削除や、例外の規定など、カスタマイズを行って使用します。

コーディング ルールの必要性

コーディング ルールの策定は,読みやすく保守性が高いコードを書くために必要です。

システム開発は基本的には複数名での開発をするため、プログラマーによって作成されるソースコードがバラバラだと、メンテナンス性がが悪いコードとなり、さらに標準化されていないコードはシステムの重大な欠陥(バグ)に繋がります。

コーディング規約で決められているルールには、クラス名(ファイル名)や、メソッド名などの命名規則や、コードスタイルのルール、コメントの書き方など多岐渡ります。

最初はルールを守りながらプログラムを書くことが面倒に思うことがあるでしょうが、共通のルールの下で作成されたソースコードは、他の開発メンバーが書いたプログラムとの共有が容易で、問題点があった時も素早く対処しながら効率良く開発が進めることができます。

もし、システム開発を外注しており、自分が開発する立場でなくてもコーディング規則は作成し、コードレビューを行うようにしましょう。システム運用後も障害や改修作業によりプログラムを修正する事はは多々あり、ずっと開発元のシステム会社が面倒を見てくれればよいが、倒産やその他の理由で開発元が面倒を見れなくなり別の会社に委託することもあり、その時、可読性の悪いコードでは引き継ぎに非常に時間と工数(費用)が必要となります。

また、複雑なコードやトリッキーなコードはバグを内包しやすくなります。例えば以下のコードのように分岐が複雑に入れ子になった処理では、非常に処理が追いずらく、機能追加の改修が発生した時に非常に改修コストがかかってしまいます。

public boolean canPurchase() {
    boolean result;

    // 在庫があるか?
    if (existsStock) {
        // ログイン中か?
        if (isLogin) {
            if ("credit".equals(payment)) {
                // クレジット払いの場合
                result = true;
                // クレジットカードが登録されているか
                if (isCreditCardRegistered()) {
                    result = true;
                } else {
                    result = false;
                }
            } else if ("qr".equals(payment)) {
                // QRコード決済の場合
                if (isQrPaymentPossible) {
                    //QR決済対応店舗か
                    result = true;
                } else {
                    result = false;
                } 
            } else {
                // クレジットカードが登録されているか
                result = false;
            }
        } else {
            result = false;
        }
    } else {
        result = false;
    }

    return result;
}

このような複雑なコードを生まないためにも、コーディング規約を策定し複雑なif文の作成を禁止することで、コードの可読性を上げるようにします。

このように、コーディング規約は一般的には「保守性」や「可読性」を上げるために作ります。

コーディング規約作るだけで満足しない

プロジェクトマネージャーなどの管理者は、コーディング規約の策定をゴールにしてはいけません。

プログラム初心者は、そもそもコーディング規約を読んでも内容を理解できなかったり、逆に腕に自信があるプログラマーの場合、省略した書き方で解読が難しい我流のコードを書きがちになり、せっかく策定したコーディング規約も、あまり守られない無意味なルールに成り下がってしまいます。

当然のことですが、コーディング規約が守られたコードが作られてこそ、初めて「保守性」や「可読性」が上がるシステム開発が成功します。

また、開発スケジュールが厳しいプロジェクトでは、初めのうちは守られていたコーディング規約も、とりあえずプログラムの完成を目指すためにコーディング規約が置き去りになる傾向があります。

最後までコーディング規約が守られ「保守性」や「可読性」が高いシステムを完成させるためには、コーディング規約の策定だけで満足せずに、継続して作成されたプログラムのコードレビューを実施して、ルール通りにコードが作成されているかチェックしていきましょう。

スポンサーリンク

まとめ

この記事では、コーディング規約の必要性について解説してきました。

オラクル社やGoogle社が公開しているコーディング規約は、システム開発で共通的に使えるも一般的なルールばかりであり、それをそのまま開発プロジェクトのコーディング規約に適用しても、大抵の場合は守られずに失敗に終わります。

基本的にコーディング規約は、開発規模や期間などに応じて参考となるコーディング規約をカスタマイズして作成しましょう。

スポンサーリンク

QooQ