0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

python-code-splitterでPythonコードを分割する

Posted at

TL;DR

Pythonコードをクラス・関数ごとに分割し、自動でGitコミットするツールを作りました。

背景

開発現場では、1つのPythonファイルに数千行のコードが詰め込まれ、複数のクラスや関数が混在していることがよくあります。
このような巨大なファイルでは、目的のクラス定義を探すのが大変です。

課題

クラスごとにファイルを分割すれば可読性は向上しますが、既存の長大なコードを手作業で整理するのは非常に手間がかかります。
さらに、コードを分割した後も、コードレビューをしやすくする必要があります。
また、クラスを移動した場合、外部からの参照が壊れないようにする対応も求められます。

ツールの紹介

そこで開発したのが python-code-splitter です。

📦 PyPI: python-code-splitter

インストール

pip install python-code-splitter

使い方

分割したいPythonファイルを指定するだけです。

python-code-splitter path/to/file.py

実行すると、path/to/file/ ディレクトリが作成され、各クラスは個別のファイルに分割されます。
例えば、SampleClass というクラスが含まれていた場合、fileディレクトリ下にsample_class.pyというファイルが作成され、そこにクラスの定義が移動します。

実行前

└── path
    └── to
        └── file.py

実行後

└── path
    └── to
        └── file
            ├── __init__.py
            └── sample_class.py

また、移動後も元のコードが正しく動作するよう、
__init__.pySampleClassimport が自動で追加されます。

Gitとの連携

--git オプションを付けると、分割ごとにGitコミットを自動作成し、
ファイルパスに応じて適切なブランチも作成されます。

python-code-splitter path/to/file.py --git

特定のターゲットのみ移動

--targets オプションを使用すると、クラス定義のみを分割できます。

python-code-splitter path/to/file.py --targets class

まとめ

python-code-splitter を使えば、
大規模なPythonコードを効率的に分割し、Gitのコミット履歴もレビューしやすい単位にできます。
ぜひ試してみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?