Skip to content

コーディング規約等

kawano edited this page Jul 1, 2023 · 2 revisions

基本方針

  • 本リポジトリにおけるPythonのコーディング規約は、PEP8を基本とする。
  • ソースコードがコーディング規約に準拠しているかの確認は、解析ツール(Linter等)を用いてできる限り機械的に行う。
  • PEP8の中で無視する規約、又は規定されていないコーディング規約を導入する際は本ページに例外として記載し、解析ツールへの反映を試みること。
  • 機械的に確認を行えない規約のみ、レビュー時に人手で確認する。
  • 機械的に確認できない規約は、本ページに記載すること。
  • 関数の引数や戻り値には、Type Hintsを付けること。

人手で確認しなければいけない規約

文字列への変数展開

Pythonの文字列へ変数を展開する方法は、いくつか用意されているが本プロジェクトにおいては%演算子を用いることとする。
以下に使用例を示す。

name = "Hoge"
age = 10
body_weight_kg = 65.4
print("名前: %s, 年齢: %d, 体重: %f" % (name, age, body_weight_kg))

Note
%演算子の採用理由は、プログラミング演習等で頻繁に利用するC言語のフォーマット指定子と書式が似ており、混乱が少ないと考えたためである。

参考: 組み込み型 — Python 3.8.10 ドキュメント

おまけ

PEP8のエラーを無視したい場合

無視したい行に、 # noqaを追記する。

以下、エラーメッセージとそれを無視するための設定例。

camera_system\camera_interface.py:18:1: E402 module level import not at top of file
make: *** [style] エラー 1
import cv2  # noqa

Note
無視できないエラーもある。

参考: Introduction — pycodestyle 2.8.0 documentation

ドキュメントコメント

  • Pythonのクラスや関数のコメントはドキュメントコメント(Googleスタイル)を採用する
  • 関数の引数には型アノテーションを使用する

Googleスタイル

※これはGoogleスタイルの説明であるため、型アノテーションを使っていません。

クラスの場合

class sampleClass() :
    """クラスの説明タイトル

    クラスについての説明文

    Attributes:
        属性の名前 (属性の型): 属性の説明
    """

関数の場合

def func(arg1, arg2) :
    """関数の説明タイトル.

    関数についての説明文

    Args:
        引数の名前 (引数の型): 引数の説明

    Returns:
        戻り値の型: 戻り値の説明

    Note:
        注意事項などを記載
    """
    return True

docstring が1行で終わる場合は、同じ行を """ で閉じるようにしてください

def func():
    """関数の説明タイトル."""

型アノテーション

型アノテーションを具体的なコードで説明する。

引数と返り値に方アノテーションを使用した具体例

Googleスタイルも採用して説明する。

def add(int: a, int b) -> int:
    """足し算を行う関数.

    値を2つ受け取り、足した結果を返す.

    Args:
        a (int): 変数
        b (int): 変数
    Returns:
        int: aとbを足した結果
    """

    return a + b

返り値が複数の場合の例

以下の関数は2つの引数を返す関数です。

from typing import Tuple

def func() -> Tuple[str, int]:

    ~ 略 ~

    return a, b

引数によって戻り値が変わる場合

以下の関数は引数の文字数に応じて文字列(str型)か文字数(int型)を返す関数です.

from typing import Union

def func() -> Union[str, int]:

    ~ 略 ~

    return a

参考

Google スタイルの docstring をドキュメントに取り込む

関数の戻り値が複数ある場合の型ヒントの書き方