我不确定是否可以就该主题提供一般性建议,但请尝试。很难解释我的情况,因为它太复杂而无法解释。这正是问题所在。
我似乎经常偶然发现我尝试设计项目的某些部分的情况,但是要考虑的事情太多了,我无法掌握它。
是否有任何关于如何一次查看我的系统的一般提示或建议?如何找到可以单独设计的较小部分?
我不确定是否可以就该主题提供一般性建议,但请尝试。很难解释我的情况,因为它太复杂而无法解释。这正是问题所在。
我似乎经常偶然发现我尝试设计项目的某些部分的情况,但是要考虑的事情太多了,我无法掌握它。
是否有任何关于如何一次查看我的系统的一般提示或建议?如何找到可以单独设计的较小部分?
创建词汇表。
换句话说,确定对项目领域有意义的术语——不是从程序员的角度,而是从熟悉主题的用户的角度。
然后尽可能精确和离散地定义这些术语。这种形式的良好定义可以作为一种伪代码。
由于您甚至没有确定问题的领域,因此我将选择一个随机示例。在文职人事系统中,您可能有以下术语:
等等。这并不是要识别功能单元,因为这听起来像是您正在尝试做的那样,但这是在这样做之前的一个很好的准备步骤,以便您可以用明确定义的术语表达您的功能步骤。
自上而下和自下而上进行问题分解很有用。
如果您无法将一个大问题拆分为两个或多个小问题,请尝试考虑需要解决的最小问题。处理完这些问题后,当您处理原始的大问题时,您可能会开始看到将它们组合成更大问题的方法。
您的主要目标是:
当我发现自己复制和粘贴代码块时进行了最小的调整,我意识到这是一个“分区”,然后创建了一个类、方法、函数或其他任何东西。
实际上,整个面向对象的方法就是它的全部内容。试着把你的应用程序看作是有形的东西。编写描述事物是什么以及它们做什么的伪代码,我发现很多这样的“分区”。
这是一个尝试,一种疯狂的猜测。
人们通常会低估完成这项工作需要多长时间。如果您的项目很大,那么您很可能需要几个人来处理它,因此您可以尝试考虑这一点进行规划。现在可以期望一个人只控制头部的一个区域,因此您需要向他准确解释他应该执行什么样的任务。
所以我想说你应该试着写一份工作描述,尽可能多地包含一个人认真专注的内容。重复,直到您将项目分解为您想要的部分。作为一个好处,你已经准备好组建你的团队了。但是如果你发现零件很小,也许你仍然可以自己做。