包含具有开始时间的对象的类的好名称

时间:2008-11-17 20:01:22

标签: java oop naming-conventions naming

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

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

9 个答案:

答案 0 :(得分:5)

这听起来像MIDI files中的事件

答案 1 :(得分:1)

是类还是接口?接口应该由其呼叫者的需求驱动。你可以用OnsetTimeable做什么(现在称之为)?你倾向于提出以-able结尾的名字,这表明你认为它是一个界面。

如果你只是对音乐进行评分,而不是编写一个程序来进行评分,我猜测得分中的大多数对象更像是简单的数据结构或“值对象”而不是带有操作的真实对象。那是因为当渲染一个对象(比如一个人员)时,封装往往会被打破。这是有道理的,因为对象的呈现或序列化的目的是捕获其所有状态。在这种情况下,使用具体的POJO可能就足够了。

答案 2 :(得分:0)

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

我认为它的名称应代表您想要通过首先设计它来制作的 abstraction

到目前为止,我们知道你的对象是什么(起始时间......),但我们不知道做什么,更重要的是baash05点out, 是什么 :总之,它代表什么。

如问题What’s the best approach to naming classes?中所述,the single responsibility principle也可能是一种很好的方法。

如果它必须代表得分任何特征的一些共同结构(注释,......),则 ScoreAttribute 之类的名称可能是合适的。

答案 3 :(得分:0)

它是什么,音乐

这是一张纸条吗? - >好名字:“注意”或“TimedNote”
这是一个短语吗? - >好名字:“MusicalPhrase”,或“Phrase”

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

答案 4 :(得分:0)

时间怎么样?或TimedFigure,TemporalFigure?

答案 5 :(得分:0)

我们不需要知道你的对象做了什么..然后我们需要知道什么类型的“猫”做..(我做的很少,但我厌恶创建一个SleepsAndPoops类)
班级名称就是“是”。
需要动词在哪里?对话框,堆栈,字符串,笔......我看不到他们任何名字中的动词?

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

然后MusicPhrase可以有一个MusicNotes数组,而MusicSong可以有一系列短语。 MusicAlbam可以有一系列的MusicSongs ..我知道我知道一首歌是按照定义音乐,但这个名字有助于他们保持在一起。

答案 6 :(得分:0)

ScoreItem? MusicalEvent?

答案 7 :(得分:0)

我赞同其他人回答这个话题;我会概括。

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

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

答案 8 :(得分:0)

听起来您可能正在描述Section,或者可能是Movement