|
|
1
429
如何设计一个类。
不要忘记使用UnitTest单独测试每个类。 而且,没有法律规定类必须是可变的。例如,在您的案例中,几乎没有可变数据。您所拥有的是由源数据集的转换函数创建的派生数据。 |
|
|
2
22
以下建议(类似于@s.lott的建议)来自本书, Beginning Python: From Novice to Professional
为了完善课程,本书还建议我们可以做以下工作:
|
|
|
3
13
我喜欢TDD方法… 因此,首先要为你想要的行为编写测试。并编写通过的代码。在这一点上,不要太担心设计,只要得到一个测试套件和通过测试的软件。如果你最终只得到一个大而难看的类,使用复杂的方法,不要担心。 有时,在这个初始过程中,您会发现一个很难测试的行为,需要分解,只是为了测试性。这可能是一个提示,表明需要单独的类。 那么有趣的部分…重构。有了工作软件后,您可以看到复杂的部分。通常,少量的行为会变得明显,这意味着一个新的类,但如果不是,只需寻找简化代码的方法。提取服务对象和值对象。简化你的方法。 如果您正确使用Git(您使用的是Git,不是吗?)在重构过程中,您可以非常快地对某些特定的分解进行试验,然后放弃它,如果它不能简化事情的话,则返回。 通过首先编写经过测试的工作代码,您应该对问题域有一个非常深入的了解,而设计第一方法是不容易做到的。编写测试和代码会让你摆脱“我从哪里开始”的瘫痪。 |
|
|
4
3
OO设计的全部思想是使代码映射到您的问题上,因此,例如,当您想要狗的第一步时,您可以执行如下操作:
现在,对于您的情况,您可能需要读取原始数据文件并计算足迹位置。所有这些都可以隐藏在footstep()函数中,以便它只发生一次。比如:
[这现在是一种缓存模式。当它第一次读取足迹数据时,随后它只从自身获取数据。_footstep。] 但是,是的,正确地进行OO设计是很困难的。更多地考虑您想要对数据做的事情,这将告诉您需要哪些方法来应用于哪些类。 |
|
|
5
2
写出你的名词、动词、形容词是个很好的方法,但我更愿意把课堂设计看作是提问。 应该隐藏哪些数据 ?
想象你有一个
这个
现在让我们考虑一下
问题是这个
这是OOP的基本权衡。如果选择正确的抽象,它会使编码更简单(字符串、数组、字典),如果选择的抽象太大(数据库、emailmanager、networkingmanager),它可能会变得太复杂,无法真正理解它的工作方式或期望的内容。目标是
隐藏复杂性
但有些复杂性是必要的。一个很好的经验法则是从避免
对于您的示例,请考虑需要将哪些数据放在一起才能计算您要查找的内容。例如,如果你想知道一只动物走了多远,你可以
|
|
|
6
2
在略读了你的链接代码之后,我觉得你过得更好
不
在这一点上设计一个狗类。相反,你应该使用
Pandas
和
dataframes
. 数据帧是一个带有列的表。您的数据框架将包含以下列:
|