我正在创建一个(Java)类来表示乐谱中的一个对象,该乐谱有特定的开始时间,也可能有持续时间。我需要给这个班级起个好名字。像"Timed“或"TimedObject”这样的东西合适吗?我试着想出一些以"-able“结尾的东西(比如Runnable),但我想不出任何好的东西;"OnsetTimeable”听起来很傻,因为"OnsetTime“不是动词。我也不太喜欢"MusicalObject“,因为这并不意味着对象有一个起始时间(一个”音乐对象“可以是与乐谱相关的任何东西)。
更新:在音乐上,这个类代表了在乐谱中某个时间点发生的事情的抽象。这应该是Note、KeyChange、MeterChange、DynamicMarking、TempoMark等类的超类。
发布于 2008-11-17 20:24:58
这听起来像MIDI files中的events。
发布于 2008-11-17 20:26:58
它是一个类,还是一个接口?接口应该由其调用者的需求驱动。你能用OnsetTimeable做什么(暂时叫它)?您倾向于提出以-able结尾的名称,这表明您可以将其视为一个接口。
如果您只是给音乐评分,而不是编写程序来播放乐谱,我猜乐谱中的大多数对象更像是简单的数据结构或“值对象”,而不是真正的带有操作的对象。这是因为当呈现一个对象时(比如在一根杆子上),封装往往会被破坏。这是有意义的,因为呈现或序列化对象的目的是捕获其所有状态。在这种情况下,使用具体的POJO可能就足够了。
发布于 2008-11-17 20:06:07
您的对象应该向系统的其余部分建议的主要服务(或多个服务)是什么?
我相信它的名字应该代表你想要通过设计它来制作的。
到目前为止,我们知道你的对象是由什么组成的(一个起始时间,...),但我们不知道什么是做,更重要的是,正如baash05所指出的,what it is :一句话,它代表了什么。
正如问题What’s the best approach to naming classes?中所提到的,the single responsibility principle也可以是一种很好的方法。
如果它必须代表分数的任何特征的一些常见结构(注意,...),那么像ScoreAttribute这样的名称可能是合适的。
https://stackoverflow.com/questions/296702
复制相似问题