Способ устранения избыточности состоит в том, чтобы идентифицировать повторяющиеся шаблоны и выделить шаблон в некоторый отдельный бит кода.
Не уверен, что это ваш настоящий код, но из вашего примера вы видите, что вы создаете целую кучу классов аналогичным образом. Даже если вы удалили 9 символов из каждой строки, необходимой для ввода context,
, вы все равно делаете:
A = a(1)
B = b(2)
C = c(3)
...
Что бы свести меня с ума. Проблема с избыточностью заключается не столько в типизации, сколько в том, что если вы хотите изменить это (скажем, вы хотите начать с 0, или вы хотите добавить дополнительный аргумент для каждого класса, или что-то еще), вы должны изменить каждую строку .
Так что я бы предпочел сделать что-то вроде этого:
classes = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]
instances = [cls(context, i) for i, cls in enumerate(classes, 1)]
Здесь у меня есть код, который ясно говорит, что я создаю экземпляр целой группы классов, и что я передаю контекст каждому из них вместе с целым числом от 1 до количества классов, которые у меня есть (увеличивается для каждого класса ). И легко самостоятельно решить, что такое список классов или что я передаю каждому классу.
Это означает, что у моих экземпляров есть имена вроде instances[0]
и instances[13]
вместо A
и N
. Есть также способы обойти это, но я нахожу редким создание экземпляра коллекции вещей, а затем использование их как независимых отдельных вещей, а не как коллекции.