質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

3回答

235閲覧

関数をまとめて実行する関数は作るべきか否か

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2019/04/07 03:23

python

1class A(): 2 @classmethod 3 def _a(cls, text): 4 return 処理を加えたtext 5 @classmethod 6 def _b(cls, text): 7 return 処理を加えたtext 8 @classmethod 9 def _c(cls, text): 10 return 処理を加えたtext 11 @classmethod 12 def d(cls, text): 13 text = cls._a(text) 14 text = cls._b(text) 15 text = cls._c(text) 16 return text

a,b,cそれぞれに役割があり、それを総括するとdといった関係にあるものです。
例)aは空白除去、bは改行除去、cは記号除去であり、dは不要な文字を除去する

  • 上記の関数dのように他の関数をまとめて実行する関数は作るべきでしょうか?作らないべきでしょうか?
  • textをメンバ変数にするべきなのでしょうか?
  • 外から実行する場合、メンバ変数textに処理したい文字列を渡し、dだけ実行するべきですか?

はたまた、dを呼び出す側に作るべきでしょうか? どのような作りにしたら良いのでしょうか?

  • @classmethodばかりのclassを作るのは不適切ですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

上記の関数dのように他の関数をまとめて実行する関数は作るべきでしょうか?作らないべきでしょうか?

「他の関数」の再利用性を考えている場合、単に長すぎて分割したい場合など、作っても良いケースはいろいろあると思います。

最初からまとめて書いた方が良いとか、別個に呼び出した方が良いとかも当然ケースに寄ってはあります。

textをメンバ変数にするべきなのでしょうか?

pythonではあまりメンバ変数とは言わない気がしますが、インスタンス変数と解して回答します。

インスタンス化してどういう風になるものなのかわからないので、一概に言えません。

インスタンスの属性にするべきであればインスタンス変数にしていいですし、単にメソッドの引数として渡されるべきでインスタンスが余計な情報を持つべきではないのであれば引数にしてください。

こういうケースでは呼び出される順番によって意味が変わったりするので、うっかりインスタンス変数にしてしまうと問題が起こりやすいかもしれません(変な順番で呼んでもインスタンスに属性が残っていれば実行できてしまう)。

外から実行する場合、メンバ変数textに処理したい文字列を渡し、dだけ実行するべきですか?
はたまた、dを呼び出す側に作るべきでしょうか? どのような作りにしたら良いのでしょうか?

これは意味がよくわかりません。

@classmethodばかりのclassを作るのは不適切ですか?

不適切とまでは言えませんが、変だと思います。インスタンスの機能を使う気がなさそうに見えるので、こういうケースであれば単にトップレベル関数を定義したモジュールにすれば済むと思います。クラスにしなくて済むものはクラスにしない方が見通しがよくなります。

投稿2019/04/07 07:40

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

上記の関数dのように他の関数をまとめて実行する関数は作るべきでしょうか?作らないべきでしょうか?

textをメンバ変数にするべきなのでしょうか?

外から実行する場合、メンバ変数textに処理したい文字列を渡し、dだけ実行するべきですか?
はたまた、dを呼び出す側に作るべきでしょうか? どのような作りにしたら良いのでしょうか?

ケースバイケースですが、提示されたコードが何かおかしいということはないと思います。

@classmethodばかりのclassを作るのは不適切ですか?

特に問題はないと思います。

投稿2019/04/07 06:27

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

上記の関数dのように他の関数をまとめて実行する関数は作るべきでしょうか?

必要と考えたら、作るべきです。
自分的な基準としては、そのような使い方が多いと思えば、作ります。
ただ、細かな関数を多数作ると、メンテナンスが大変そうなので、その辺も考慮します。

この辺は設計の話になるので、どんなシステムを作るか、にも依存するので、簡単には答えられないですが。

投稿2019/04/07 03:59

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問