Newer
Older
TIASjudge / .claude / rules / coding-style.md

paths: ["src/", "tests/"]

コーディング規約 (Coding Style)

Python コードを書くときは本規約に従うこと.基本方針として PEP 8 と Ruff のデフォルトルールに準拠し,プロジェクト固有の上書き項目のみ以下に定める.

フォーマット・lint (Format & Lint)

  • フォーマット・lint は Ruff に一任する(uv run ruff format / uv run ruff check).手動整形で Ruff と争わない
  • 1 行の長さ: 100 文字(pyproject.toml の line-length で設定)
  • 文字コード: UTF-8.ソース内の日本語(コメント・UI 文字列)は UTF-8 で直接書く

命名 (Naming)

  • モジュール・関数・変数: snake_case/クラス: PascalCase/定数: UPPER_SNAKE_CASE(PEP 8 どおり)
  • 旧実装のハンガリアン記法(m_Img・m_xView 等)は移植時に廃止し,意味の分かる名前に付け替える
  • 診断ドメインの用語は英語に統一する(例: tongue_color,transform_matrix,diagnosis_result).5 色のキーは purple / dark_red / crimson / pink / pale を使う

型ヒント (Type Hints)

  • 関数・メソッドの引数と戻り値には型ヒントを必ず付ける
  • NumPy 配列は numpy.typing.NDArray を使い,dtype が重要な箇所は docstring で形状・dtype を補足する

コメント・docstring (Comments & Docstrings)

  • docstring・コメントは日本語でよい
  • 公開関数(core パッケージの API)には docstring を付け,1 行要約+必要なら引数・戻り値の説明を書く
  • 旧実装との対応が保守に役立つ箇所(数式・パラメータ等)は「現行実装踏襲」の旨と根拠(SPEC_02 参照等)をコメントで残す

import (Imports)

  • 並び順は Ruff(isort ルール)に一任する
  • from module import * は禁止(旧実装の using namespace cv に相当する濫用を避ける)
  • OpenCV は import cv2,NumPy は import numpy as np の慣用名を使う

その他 (Miscellaneous)

  • パス操作は pathlib.Path を使う(os.path・文字列連結は使わない).絶対パスのハードコード禁止(ENV_02「環境再現性のルール」参照)
  • マジックナンバーは定数化する(ROI サイズ・SVM パラメータ・白色点等は SPEC_02 と対応する名前を付ける)