我正在处理一个大型项目(对我来说),它将有许多类,需要可扩展,但我不确定如何规划我的程序以及类需要如何交互。
几个学期前我上了一门OOD课程,从中学到了很多东西;比如编写UML,并将需求文档转换为对象和类。我们也学过序列图但不知怎么的我错过了这节课,我没能记住它们。
在之前的项目中,我尝试使用从课程中学到的方法,但通常在我说“是的,这看起来像我想要的东西”时,我就会以代码结束,我不想再挖掘出新的功能。
我有一本Steve McConnell的《Code Complete》,我经常在这里和其他地方听到它的神奇之处。我读了关于设计的章节,似乎没有得到我想要的信息。我知道他说这不是一个固定的过程,它主要是基于启发式,但我似乎不能把他所有的信息都应用到我的项目中。
那么,在高级设计阶段(在开始编程之前),你要做些什么来确定你需要什么类(特别是那些不基于任何“现实世界对象”的类)以及它们如何相互交互?
我特别感兴趣的是你使用的方法是什么?你遵循什么样的过程,通常会产生一个良好的,干净的设计,将接近最终产品?
我认为这里的答案应该是非常不同的,这取决于这个人在现实世界中的经验。
如果你只有一两年的工作经验,那么你必须明白这一点:你如何才能真正了解你的数据,并确切地了解你要做的事情?
是的,如果您已经在现实世界中工作了5年以上,那么您可以在许多软件开发过程模型或技术中选择任何一种。
但是光靠读书是得不到经验的。你应该在一个好的领导下的好团队中学习。
如果这是不可能的,那么你应该自己做。从编写一段可能非常糟糕的代码开始迭代,学习错误,丢弃所有错误,编写更好的代码等等。
您将学到很多关于代码库的知识。工具就是工具,它们不会教你任何东西。
我建议你使用BlueJ和ActiveWriter来学习和发展对对象的良好理解。推荐的书也是很好的资源。
从维基百科:
(来源:bluej.org)
BlueJ是一个综合开发项目
Java编程环境
语言,主要是为了
教育的目的,也是
适用于小规模软件
发展。
此外,它使用UML,对我来说,这是一个很好的资源来理解建模对象的一些事情。
可选文字 http://www.ryanknu.com/ryan/bluej.png
ActiveWriter是一个建模实体和关系的工具,它还可以生成代码,并且很容易进行更改。它将节省您的时间,并且对于敏捷开发非常适合。
(来源:altinoren.com)