システム開発演習中のコード規約は以下のとおりです。

なお、この規約にないルールは各社で自由に決めることができます。

全般的な規約

  • ソースコードには適切なコメントを書きます。特に、メソッド(関数)やクラス、複雑なロジックについてはその目的や動作を明確に説明します。
  • 不明瞭な命名は避け、変数、メソッド(関数)、クラスなどの名前はその目的や機能を明確に反映します。

Java (Servlet/JSP)

クラス名:

  • クラス名の最初の単語は大文字で、それ以降の単語の最初の文字も大文字にします。(パスカルケース)
    例: OrderProcessor, EmailValidator
  • 名詞または名詞句を使用し、具体的な目的や機能を示す名前を付けます。
    例: Customer, CarsBean,
  • Servletの命名規則:ファイル名はServletで終わり、urlPatternsはファイル名からServletを除いたものを使います。ファイル名:XxxServlet.java → urlPatterns:”/Xxx” のようになります。
    例:ファイル名:LoginServlet.java → urlPatterns:”/Login”
  • DAOの命名規則:ファイル名はDaoで終えます。
    例:UsersDao
  • DTOの命名規則:ファイル名はDto または Beanで終えます。
    例:UserDto, UserBean

メソッド名:

  • メソッド名はキャメルケースを使用します。
  • メソッド名は動詞または動詞句で始まり、操作や動作を明確に示します。
    例: calculateTotal, validateInput, sendEmail

変数名:

  1. 変数名もキャメルケースを使用します。
  2. 変数名は意味のある名前にし、その役割や内容を示すようにします。
    例: count, userName, totalAmount

定数名:

  • 定数名はすべて大文字で、単語間はアンダースコア(_)で区切ります。
    例: MAX_VALUE, DEFAULT_TIMEOUT, DB_NAME
  • 定数はfinal修飾子を使用して宣言し、値が変更されないことを示します。

JSPのファイル名:

  • 複数の単語を含むファイル名では、単語間をハイフン(-)で区切るケバブケースを使用します。
    例: login-post.jsp

その他:

  • パッケージcontroller, model, dao, フォルダviewは必須です。
  • リダイレクト先はサーブレットのみとし、JSP等にはしません。MVCパターンに忠実なシステムにするためです。
    例:response.sendRedirect(request.getContextPath() + "/Order");
  • JSPにはユーザーが直接アクセスできないようにし、サーブレット経由でのみアクセスできるようにします。

HTML5/CSS3/Bootstrap

  • ファイル名はすべて英小文字を使用します。
  • 複数の単語を含むファイル名では、単語間をハイフン(-)で区切るケバブケースを使用します。
  • ファイル名はその内容を簡潔に説明するようにします。
  • HTMLファイルの拡張子は.htmlを使用します。.htmは使用しません。

JavaScript

  • 変数名、関数名はキャメルケースを使用します。
  • 定数名は全て大文字で、単語間はアンダースコア(_)で区切ります。
  • グローバル変数の使用は避けます。

MySQL

命名規則:

  • テーブル名、カラム名は小文字を使用し、単語間はアンダースコア(_)で区切るスネークケースを使用します。
    例: user_account, account_id
  • テーブル名はできるだけ複数形を使用します。
    例: users, accounts

SQLキーワードのケース:

  • SQLキーワード(SELECT, INSERT, UPDATE, WHEREなど)は大文字を使用します。

インデントと空白行:

  • クエリが複数行に渡る場合はインデントを使用します。
  • 長いクエリには空白行を適宜使用して、複数のセクションを視覚的に区切ります。

コメント:

  • 複雑なクエリやストアドプロシージャには、その目的と動作を説明するコメントをつけます。

ワイルドカード*の使用:

  • ワイルドカード*の使用は避け、必要なカラムを明示的に指定します。

SQLインジェクション攻撃:

  • SQLインジェクション攻撃を避けるため、ユーザーからの入力を直接クエリに組み込まず、パラメータ化クエリ(?)やプリペアドステートメントを使用します。

「当社システム開発演習でのコード規約」 最後までお読みいただきありがとうございます。