我在这里遇到了一些严重的问题。我们什么时候需要一个班级?
具体来说,我想到设计一个桌面应用程序,它能够为我指定的任意数量的方法生成分析测试或单元测试。我有一个简单的列表来存储方法。我没想过上课。但是现在,我想到创建一个类来存储所有类并获取类中的方法集。如果这个想法是正确的,我的最后4天的努力是无效的。如果我能得到一些信息,那就提出一个新问题。
我的方法也找不到头部或尾部。所以想和任何有兴趣帮助我进行设计的人讨论。
答案 0 :(得分:3)
通常,定义要移动到自己的类中的一组数据和功能的边界的规则是single responsibility principle。
在Martin Fowler的优秀refactoring bliki中,您会发现许多模式可以在类之间移动职责,数据和功能(当然,显而易见的Extract Class,但有强大的帮助提取方法,在您的情况下,Encapsulate Collection,也许)。
TDD是很早就概述设计的好方法。通常“易于测试”导致“解耦”,从而导致关注点分离。
同时使用这两个程序(TDD +重构)可以帮助您从设计过渡到另一个:事情应该更顺利。
另一个很好的指导方针是DIYDI(自己动手依赖注射)。
另外:你在这里进行代码生成或运行时分析吗?
在第一种情况下,您可能对template engines感兴趣,这可能会为您在后处理阶段节省大量工作。
在第二种情况下,您可以使用Aspect Oriented Programming和/或Reflection检查类并找出它们的方法。
答案 1 :(得分:2)
请阅读Grady Booch等人的this text以开始使用面向对象的设计。
答案 2 :(得分:1)
设计可能非常困难,在您获得一些经验之前,您将做出错误的选择,因此编写测试以便更轻松地重构代码。我建议阅读,代码完成。但是,既然你可能想立即开始,你的问题是直接询问OO和课程,我也建议阅读Uncle Bob的博客帖子
http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
希望这有帮助
答案 3 :(得分:1)
在一个简单的陈述中 - 如果您有关于必须执行哪些操作的任何数据,那么您需要一个类。这些的好例子是数据容器,如linklist,vector,.... 这称为基于对象的编程,是类设计的第一步。
下一步是面向对象(继承,多态),熟练掌握经验并查看设计良好的代码。
答案 4 :(得分:0)
如果您的应用程序不可重用(“桌面应用程序”暗示),则由您自行决定对象的粒度。
只要您拥有(或没有)额外的课程,没有理由改变它。
如果您正在寻找OO(面向对象设计)的原则,那么有大量的文献和网络链接可供选择。