现在,我正在为MVC Pattern编写Python-flask代码。 但是,我认为自己,我认为控制器类的声明者太长了
例如,我有
class GoogleQuestionController:
def __init__(self):
(.....)
和
class YahooQuestionController:
def __init__(self):
(.....)
两个非常相似的类名,所以我不能像
那样定义声明符question_controller = GoogleQuestionController()
的上方。
定义类声明符的最佳建议是什么?
google_question_controller = GoogleQuestionController()
yahoo_question_controller = YahooQuestionController()
这段代码太长了,
所以,我现在正在这样使用。
yq_con = YahooQuestionController()
gq_con = GoogleQuestionController()
或
gqc = GoogleQuestionController()
yqc = YahooQuestionController()
答案 0 :(得分:1)
上下文非常重要:
SUB Y, D3
可能没问题,但是如果我们能够重构以使名词不含糊,即如果只有一个谷歌对象我可能会使用:
google_question_controller = GoogleQuestionController()
yahoo_question_controller = YahooQuestionController()
同样,如果动词不明确,例如如果我在Google对象/模块中,我会使用google = GoogleQuestionController()
yahoo = YahooQuestionController()
(或者question
):
controller
通过这种方式,您可以通过某种方式重写代码以提高可读性。
通常情况下,在这种情况下,将相似的行为组合在一起可以带来更好的抽象,例如我们可以定义一个mixin / base类,它使用class GoogleSomething(object):
def __init__(self):
self.question = GoogleQuestionController() # or perhaps `controller`
class YahooSomething(object):
def __init__(self):
self.question = YahooQuestionController()
之间使用共享API {{1} }和self.controller
等。
答案 1 :(得分:0)
也许这不是您正在寻找的答案,但我强烈建议您实际选择:
google_question_controller = GoogleQuestionController()
yahoo_question_controller = YahooQuestionController()
我不认为这太长了,实际上它是可读的和整洁的。
现在,意见旁白,请记住PEP 8对长度没有限制,但对变量具有很高的可读性:
使用函数命名规则:小写,单词分隔 必要时强调提高可读性。