teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記

2021/01/05 04:05

投稿

winterboum
winterboum

スコア23654

answer CHANGED
@@ -8,4 +8,22 @@
8
8
  モジュールは「他に委ねる」methodは汎用性があり、他のテーマにも使える
9
9
  という感じでしょうか。
10
10
  ただ、引用している「モジュールでの解き方」は参考にするようなものとは思えません。不必要に複雑。
11
- この問題はクラスを作ることもなく、1行野郎です。
11
+ この問題はクラスを作ることもなく、1行野郎です。
12
+
13
+ 追記
14
+ 全部の例を読んで考察するほどのテーマではないと思うので、たまたま開いた「電話帳作成問題」について。
15
+ これも含めあのようなサイトでは自動で評価します。何も指定しないと呼び方がまちまちになり自動評価にかけるのが出来ないので、プログラムをどう呼ぶかを規制します。「電話帳作成問題」では`NameIndex.create_index(names)`と呼ぶよ、ということを宣言しています。
16
+ で、
17
+ classで作る以上、入り口はclassメソットにせざるを得ません。実装を全部classメソッドで書けと言っているわけではないですし、もしそうしたら object指向でのプログラムとしては減点されるでしょう。
18
+ 私もこういう書き方をすることはよくあります。
19
+ `class CsvIo
20
+ def self.create(data)
21
+ new(data).make
22
+ end
23
+ def make
24
+ ごちゃごちゃ
25
+ end
26
+ end`
27
+ みたいな感じ。classメソッドでインスタンスをつくる。実際の仕事はインスタンスが行う。
28
+
29
+ 「methodは汎用性があり、他のテーマにも使える」 の意味は、組み込まれているmodule Mathのメソッドの使い方を見ればわかるのでhあないか、と。

2

typo修正

2021/01/05 04:05

投稿

winterboum
winterboum

スコア23654

answer CHANGED
@@ -7,5 +7,5 @@
7
7
  クラスは「自分で解かせる」methodは問題固有で他に流用は考えない
8
8
  モジュールは「他に委ねる」methodは汎用性があり、他のテーマにも使える
9
9
  という感じでしょうか。
10
- ただ、引用指定す「モジュールでの解き方」は参考にするようなものとは思えません。不必要に複雑。
10
+ ただ、引用している「モジュールでの解き方」は参考にするようなものとは思えません。不必要に複雑。
11
11
  この問題はクラスを作ることもなく、1行野郎です。

1

追記

2021/01/04 23:59

投稿

winterboum
winterboum

スコア23654

answer CHANGED
@@ -4,6 +4,8 @@
4
4
  クラスメソッドとして実装 ですと、クラスを作る意味が殆ど無い、トップレベルでメソッド定義したほうが(このくらいの複雑さの少ない)問題ならよいと思います。
5
5
 
6
6
  クラスかモジュールか、は考え方の違いでどちらが良いか悪いかということは余りないと思います。
7
- クラスは「自分で解かせる」、モジュール他に委ねる」とう感じでしょうか。
7
+ クラスは「自分で解かせる」method問題固有で他に流用は考えな
8
+ モジュールは「他に委ねる」methodは汎用性があり、他のテーマにも使える
9
+ という感じでしょうか。
8
10
  ただ、引用指定す「モジュールでの解き方」は参考にするようなものとは思えません。不必要に複雑。
9
11
  この問題はクラスを作ることもなく、1行野郎です。