我重構一些代碼,一個朋友寫的,最近碰到這個功能偶然發現:如何重構Python的「switch語句」
def setup_parameters(self, data):
'''Parse raw data to determine game settings.'''
for line in data.split('\n'):
line = line.strip().lower()
if line:
tokens = line.split()
self.L.debug("tokens: " + str(tokens))
key = tokens[0]
if key == 'cols':
self.width = int(tokens[1])
elif key == 'rows':
self.height = int(tokens[1])
elif key == 'player_seed':
random.seed(int(tokens[1]))
elif key == 'turntime':
self.turntime = int(tokens[1])
elif key == 'loadtime':
self.loadtime = int(tokens[1])
elif key == 'viewradius2':
self.viewradius2 = int(tokens[1])
elif key == 'attackradius2':
self.attackradius2 = int(tokens[1])
elif key == 'spawnradius2':
self.spawnradius2 = int(tokens[1])
正如你可以看到,有一個很討厭的一種switch語句在這裏,這明確要求字典。我很想把它寫成一個類字典,因爲這些鍵是常量,但是由於鍵映射到實例的屬性(即'cols':self.width),所以不能編譯。
我的問題是,什麼是重構這種代碼的正確方法?
重複的問題:http://stackoverflow.com/questions/60208/replacements-for-switch-statement-in -python – JBernardo
「清楚」?基於什麼? –
看到你正在努力重構代碼,我建議你看看並使用標準的Python ConfigParser模塊 – fabrizioM