我正在创建一个(Java)类来表示乐谱中具有特定开始时间的对象,也可能是持续时间。我需要这个班级的好名字。像“Timed”或“TimedObject”这样的东西是否合适?我试图想出一些以“-able”结尾的东西(比如Runnable),但我想不出什么好事; “OnsetTimeable”听起来很愚蠢,因为“OnsetTime”不是动词。我不太喜欢“MusicalObject”,因为这并不意味着对象有一个开始时间(“音乐对象”可能与得分有关)。
更新:音乐上,这个类代表了在乐谱中某个时间点发生的事物的抽象。这应该是类的超类,如Note,KeyChange,MeterChange,DynamicMarking,TempoMark等。
答案 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)