回答編集履歴

2

変だったところ修正

2018/11/06 08:54

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -184,7 +184,7 @@
184
184
 
185
185
 
186
186
 
187
- ちょっと判断に迷いますが、少なくとも入力処理には汎用性をもたせて
187
+ ちょっと判断に迷いますが、できれば入力処理には汎用性をもたせて流用したいところですね。内部の判定などのロジックは変わると思うので、そういった部分だけ書き換えれば済むようにします。当然、それを前提にしたデータ構造にする必要があるでしょう。
188
188
 
189
189
 
190
190
 

1

クラスを分ける場合について追記

2018/11/06 08:54

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -150,7 +150,7 @@
150
150
 
151
151
 
152
152
 
153
- ところで、最初のコードはオリジナルから2箇所書き換えたんですが、気づきましたか?
153
+ ところで、最初のコードはオリジナルから2箇所書き換えたんですが、気づきましたか? 私がいきなり見せられたら見落とす自信があります。見落とすということは、凡ミスがあっても、バグが埋もれていても、気づけないということです。こういうコードは困ったコードです。
154
154
 
155
155
 
156
156
 
@@ -158,6 +158,44 @@
158
158
 
159
159
 
160
160
 
161
+ DataクラスをBaseクラスとKakouクラスに分ける場合、文字通り解釈するのであればクラスを継承することになります。
162
+
163
+
164
+
165
+ ```python
166
+
167
+ class Base(Data):
168
+
169
+ ... # 変更点についてはメソッドをオーバーライド
170
+
171
+
172
+
173
+ class Kakou(Data):
174
+
175
+ ... # 変更点についてはメソッドをオーバーライド
176
+
177
+
178
+
179
+ ```
180
+
181
+
182
+
183
+ ただ、元のDataクラスが汎用性の高い作りにはなっていないので、`show_all()`は使い回せると思いますが、他はすべて書き直すことになると思います。何のために継承しているのかよくわからない事態になりそうです。
184
+
185
+
186
+
187
+ ちょっと判断に迷いますが、少なくとも入力処理には汎用性をもたせて
188
+
189
+
190
+
191
+ なお、質問文のコードでやっているのは「クラスを分ける」といった行為ではなく、「一つのクラスになんでも書いてしまう」という行為です。これを俗に神クラスと言ったりします。典型的なアンチパターン(不適当とされるコードのパターン)の一つです。
192
+
193
+
194
+
195
+ ---
196
+
197
+
198
+
161
199
  こんな感じで改善していくことはできると思いますが、どこまでやっても、車輪の再発明にしかなりません。
162
200
 
163
201