Python设计王者荣耀人物结构(64)*
2017-08-06 本文已影响46人
一日歌
这个周末要做的是设计王者荣耀人物的人物结构,用python打印出英雄及其属性。今天是揭晓答案的时候。
王者荣耀人物繁多,虽分为六个大类,有的人物却会在不同的类别里重复出现。而人物的属性也有很多,在三个大类别下还有细分。我原来的思路是按照用户界面显示来写程序的逻辑,但是即使我用了两层嵌套也无法表示出和用户界面一样的数据结构。
看了大大的代码以后我问了大大这样一个问题:是不是代码嵌套的层数越少越好?
大大给的回复是:代码越简单越好,奥姆剃刀。里面最基本的思想,就是把人物和具有属性抽象出来,而不是根据显示来决定数据结构。
于是我有如下的理解:显示给用户的界面可以很复杂,但是它内在的代码是简单的重复。
下图是python大大的代码


我跟着大大又敲了一遍


这样的代码非常简洁,只是在列表里嵌套了一层字典。即使需要修改列表或者字典都可以直接修改而不需要改动后面的循环里的代码。比如我想再添加一个英雄,或者给某一个英雄添加一些属性,只需要在列表或者字典里直接修改而不需要改动后面的代码,这对于代码的修改提供了方便。


我加了一个人物曹操,同时又在他的性能里添加了移速,这都不需要改动其他代码。