2

我正在创建一个(Java)类来表示乐谱中具有特定开始时间的对象,并且可能还有持续时间。我需要为这门课起个好听的名字。像“Timed”或“TimedObject”这样的东西合适吗?我试图想出一些以“-able”结尾的东西(比如 Runnable),但我想不出什么好东西;“OnsetTimeable”听起来很傻,因为“OnsetTime”不是动词。我也不太喜欢“MusicalObject”,因为这并不意味着该对象有一个开始时间(“音乐对象”可以是与乐谱相关的任何东西)。

更新:从音乐上讲,这个类代表了乐谱中某个时间点发生的事情的抽象。这应该是 Note、KeyChange、MeterChange、DynamicMarking、TempoMark 等类的超类。

4

9 回答 9

5

这听起来像是MIDI 文件中的事件

于 2008-11-17T20:24:58.210 回答
1

是类还是接口?接口应该由调用者的需求驱动。你能用 OnsetTimeable 做什么(现在叫它)?您提出以 -able 结尾的名称的倾向表明您将其视为一个接口。

如果您只是为音乐评分,而不是编写程序来播放乐谱,我猜乐谱中的大多数对象将更像是简单的数据结构或“值对象”,而不是具有操作的真实对象。这是因为在渲染对象时(比如在五线谱上),封装往往会被破坏。这是有道理的,因为对象的渲染或序列化点是捕获其所有状态。在这种情况下,使用具体的 POJO 可能就足够了。

于 2008-11-17T20:26:58.037 回答
0

您的对象应该向系统的其余部分提出的主要服务(或服务)是什么?

我相信它的名字应该代表你想通过首先设计它来实现的抽象。

到目前为止,我们知道您的对象是由什么组成的(开始时间,...),但我们不知道它是做什么的更重要的是,正如baash05指出的那样,它什么:总之,它代表什么。

正如问题中提到的命名类的最佳方法是什么?单一责任原则也可以是一个很好的方法。

如果它必须代表乐谱的任何特征(注意,...)的某种通用结构,那么像ScoreAttribute这样的名称可能是合适的。

于 2008-11-17T20:06:07.470 回答
0

它是什么,在音乐上?

是笔记吗?-> 好名字:“Note”,或“TimedNote”
是短语吗?-> 好名字:“MusicalPhrase”或“Phrase”
等。

不要将对象从其上下文中抽象出来(例如,将其命名为“Timed”);选择一个名称,考虑对象的真正含义以及它在您的程序中的用途。

于 2008-11-17T20:10:21.923 回答
0

时间呢?还是 TimedFigure、TemporalFigure ?

于 2008-11-17T20:20:24.180 回答
0

我们不需要知道你的对象做了什么。然后我们需要知道“Cat”的类类型是什么......(我的做的很少,但我不愿意创建一个 SleepsAndPoops 类)
类名就是它“是”。
哪里需要动词?对话框、堆栈、字符串、笔……我在他们的名字中没有看到动词?

我会选择MusicNote ..
所有音符都有时间元素.. 真的。你听过没有时间元素的音符吗?

然后一个 MusicPhrase 可以有一个 MusicNotes 数组,一个 MusicSong 可以有一个短语数组。MusicAlbam 可以有一系列 MusicSongs。
我知道我知道一首歌从定义上讲是音乐剧,但名称有助于将它们保持在一起。

于 2008-11-17T20:20:50.793 回答
0

分数项?音乐盛会?

于 2008-11-17T20:21:44.100 回答
0

我同意其他人回答这个问题;我会概括。

考虑创建一个类,比如命名为“TimedAction”。这可以参数化以在指定时间执行某种操作;然后你只需告诉“TimedAction”它在那个时候会做什么。这允许您修改操作,并为您可能需要实施的其他操作提供灵活性。

这里的想法是你希望在给定的时间发生一些事情。与其把它想象成你想要发生的事情,不如把它想象成某件事的发生。因此,您创建了一个用于发生“TimedAction”的类并将其参数化。这与你为正在发生的事情创建一个类的第一直觉相反。

于 2008-11-17T20:22:32.880 回答
0

听起来您可能正在描述一个部分,或者可能是一个运动

于 2008-11-17T20:38:14.050 回答