Web项目中可以使用哪种模式?用于向维基页面添加评论的模式?
我正在用ASP.NET开发一个wiki项目。在我的结构中,每个维基条目可以有 评论。
哪种方法是最好的:
wikiEntry.AddComments(newComment);
wikiEntry.Comments.Add(newComment);
entryManager.AddComment(wikiEntry, newComment);
Web项目中可以使用哪种模式?用于向维基页面添加评论的模式?
我正在用ASP.NET开发一个wiki项目。在我的结构中,每个维基条目可以有 评论。
哪种方法是最好的:
wikiEntry.AddComments(newComment);
wikiEntry.Comments.Add(newComment);
entryManager.AddComment(wikiEntry, newComment);
wikiEntry.AddComments(newComment);
权,客户端代码很简单,没有关于意见如何内部表示担忧。
wikiEntry.Comments.Add(newComment);
错误,客户端应该担心意见,如果空?没有信息隐藏
entryManager.AddComment(wikiEntry, newComment);
错误,responsabilities都是错误导致程序代码
封装建议1.我会与去。 (但这不是我实际做到的)。
如果评论是真正的意见,你可以执行各种操作,比如上市,删除列表,添加,重命名,改变,我会跟
wikiEntry.AddComments(newComment);
go如果wikiEntry莫名其妙地管理评论和内部你能做的就是增加新的唯一的事情,我会去用:
wikiEntry.Comments.Add(newComment);
我永远不会使用:
entryManager.AddComment(wikiEntry, newComment);
然后您使用wikiEntry.Save()进行保存过程? – devran 2009-08-17 08:12:18
所有其他thigh是平等的,我会去:
wikiEntry.AddComments(newComment);
这似乎是最简单和最清晰的方式来表示你在做什么。我发现最简单的方法通常是最好的。
除了以前的答案,我会写只有第二种方式:
wikiEntry。 Comments.Add(newComment);
这种方式不是那么糟糕对方说
所有的工作涉及到通过评论财产,这是很容易和直观的进行评论。
没有必要为所有者对象的每个新功能添加新方法(如AddComment,RemoveComment,FindComment等)。这样所有者对象不包含所有内部对象的方法,它更小,更干净。有干净的代码分离。
如果你想查询评论,你只需要这样做,并且不需要向所有者添加特定的FindBySomething方法。
您可以使评论永不为空 - 在每次调用时都会对null进行不必要的测试。 一般来说,我没有看到隐藏信息的问题,但这可能取决于特定的场景或应用程序。
微软在他们的控件中广泛使用这种模式。查看DataGrid的属性Items和Attributes。
我肯定会去与wikiEntry.Comments.Add(newComment)方法。我在下面列出了我的理由。它感觉很直观,因为它与Microsoft现有控件的工作方式相同,因此您的代码自然感觉就像是代码库的一部分。
它将一件事情的功能 - 评论 - 分成它自己的职责范围。在Comments集合中,您可以添加,编辑,删除,排序等。这样,如果您想要也能够添加,编辑,删除,排序等参考列表,编辑,版主,历史快照,不管你是否希望为每一个这样的集合,许多/你可能不会这么做)
你可以在其他类中重用评论集合,并且已经有内置的功能用于处理对列表的修改。
想想:wikiEntry.Comments [parentComment] .Comments.Add(newComment);
为您提供了一种表示嵌套注释的简单方法。
我有点困惑。首先是非常简单的。但第二种方法更加实用和可维护。 – devran 2009-08-20 17:04:09