Java 对于包含具有起始时间的对象的类来说,这是一个很好的名称

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

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

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

您的对象应该向系统的其余部分建议的主要服务是什么

我相信它的名字应该代表你想通过设计它来制作的

到目前为止,我们知道你的物体是由什么组成的(起始时间,…),但我们不知道它的作用,更重要的是,正如所指出的,它是什么:一句话,它代表什么

正如问题中提到的,这也是一个很好的方法

如果它必须代表一个乐谱的任何特征的一些共同结构(注,…),那么像ScoreAttribute这样的名称可能是合适的。

从音乐上讲,它是什么

这是一张便条吗?->好名字:“Note”或“TimedNote”
这是一个短语吗?->好名字:“音乐短语”或“短语”
等等


不要从上下文中提取对象(例如,将其命名为“Timed”);选择一个名称,考虑对象实际上是什么,以及它在程序中的用途。

时间的呢?或者时间图形、时间图形?

我们不需要知道对象的功能。。我们还需要知道“Cat”的类类型是什么。。(我的做得很少,但我不愿意创建SleepsAndPoops类)
类名就是它的“本来面目”<哪里需要动词?对话框、堆栈、字符串、笔。。。我在他们的名字里没有看到动词

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


然后一个音乐短语可以有一系列的音乐词,一首音乐歌曲可以有一系列的短语。MusicAlbam可能有一系列的音乐歌曲<我知道我知道一首歌的定义是音乐的,但名字有助于将它们联系在一起

评分项目?MusicalEvent?

我同意其他人回答这个问题;我会一概而论

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


这里的想法是,你希望在给定的时间发生一些事情。与其认为它是你想要发生的事情,不如把它看作是某件事情的发生。因此,您可以为“TimedAction”创建一个类,并将对象参数化。这与您为发生的事件创建类的第一本能相反。

这听起来像中的事件。

是类还是接口?接口应该由其调用者的需求驱动。对于OnsetTimeable,您可以做什么(现在就这么称呼它)?你倾向于提出以-able结尾的名字,这表明你把它看作是一个接口


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

听起来你可能在描述一个,或者可能是一个。

从音乐角度来说,它代表了在乐谱中某个时间点发生的事情的抽象。这应该是类的超类,如Note、KeyChange、MeterChange、DynamicMarking、TempoMark等。Key change和类似song对象的声音元素不是特定于音符的。我的意思是,如果你自己演奏一个音符,它不知道这是一个米或键的变化。如果你这样做的话,你是在让音符对歌曲应该注意的事情负责。它打破了OO设计规则(比我的答案中说得更好;)+1这意味着是一个超类的东西,如关键的变化,以及,这不是类型的音乐笔记使它成为一个超级类,一个音符和一个关键的变化(这是一首歌的元素)是疯狂的。一张便笺应该不知道钥匙的变化等等。。我认为他试图超越这个物体是一个错误。。钥匙更改不属于“是A”的范围。一个短语可能“有一个”键变化,但它不是一个“是A”。一个键变化既是一个书面的音乐符号,也是乐谱中的一个事件。只有当你有一些代码使用这个超类而没有向下转换时,你才需要一个超类。如果您没有任何可以与supertype一起使用的客户端代码,那么它是多余的,并且会导致麻烦。如果您能提供该(伪)代码的示例,它将建议一个合适的名称。事件、发生、发生,如“历史事件”中的“历史事件”似乎是一个非常合适的通用术语。“音符”如“在给定旋律的特定时间播放的声音”在这种情况下也可能是正确的,除非您已经将“音符”仅用于频率。