规划任务的最佳方式?

问题描述:

由于我对编程非常陌生,所以我很好奇学习编程的最佳方法/实践。规划任务的最佳方式?

每当我想编写任何程序时,我都会直接从编码开始,而有些人则说您应该在开始编码之前先计划您的程序。

但我不明白创建类图和所有类型的东西真正的价值因为我认为最终我必须编写代码。

你们可以请你分享一下你的经验吗?我的意思是当你启动一个应用程序时,你的第一步是什么?

有时候一项艰巨的任务让人望而生畏,甚至可能只是“编写代码”而无法计划,因为你只是不知道从哪里开始。我记得几年前,我曾经被困在一些尝试新事物的年龄段,因为我的位置已经提升,我的主要工作是提高功能 - 我没有使用空白画布的经验。这是瘫痪的,无法采取一种方法,因为它可能是一个次优的设计选择。

但无论如何,现在我倾向于坐下来用纸和迭代设计。

如果它很大,我将开始勾画出它的各个部分将如何单独工作,并最终将这些部分连接在一起。我尝试将它转化为类或模块,然后我会发现设计中存在冗余,或者那里有些东西不起作用。所以我重新开始,用更好的方法写下来...并找出更多问题。我一直在迭代,在每一次扫描中更好地理解问题。 (白板可以很好地帮助你解决问题,在解决棘手问题时是物理上的。)

当我有一个非常详细的psuedocode /流程图设计,它没有明显的问题 - 那是我开始编码的时候。在一个正式的环境中,最终的设计草图就是我将变成一个规范并分发给用户/开发人员进行审查。

通常,具有复杂的设计,我将改变这个设计草图到的意见来指导我,因为我的代码,这比具有更快,更准确地进行协商每2秒我的笔记:

// open file 
// read header line 
// check header is right (watch for int problem) 
// select right config object 
// loop over lines, read each line into config object 

而且我将每个评论转换为代码。

这比将自己编入死路并且不得不写入并重写仅仅是因为从一开始就没有处理这个问题。这并不意味着设计不会再发生变化 - 您仍然会发现问题 - 但是在您访问IDE之前,一些主要的设计错误可能会被摧毁。

有很多方法来设计,这只是对我有用。什么是最好的可以根据项目类型和团队的规模而有所不同。

+0

我也是这么做的。无法说得更好。 – 2010-04-23 07:46:32

+0

说得好,我在4年的职业生涯中使用它并给了我很好的结果,并且还在继续。 – JPReddy 2010-06-25 13:35:46

我是CRC Cards的粉丝。

CRC代表类,责任,协作。您使用一组明信片,每张卡片代表一个类别,并列出其负责的内容,以及与其他类别的合作方式。

给出一个功能列表和/或一组使用案例,CRC卡可以很容易地“执行”软件的各种功能,确保存在执行所需操作的类,以及关系这些类别之间存在着允许他们一起正常工作。

+0

对于“低级”设计,CRC卡很棒。我发现有用的方法之一是Joel的功能和任务:http://www.jsjs.com/soft/fog0000000245.html它已被“升级”为基于证据的调度,但我仍然喜欢更简单的方法。这很好,如果你还需要弄清楚需求,在你点击CRC之前 – 2010-04-23 11:18:32

我正在使用类似“reallife”的CRC卡片 - 我只拿了几张纸和一支笔,开始绘制类和它们的方法以及所有依赖关系的草图。其他论文用于更详细的功能信息。

如果您不熟悉编程,那么从基础开始:学习编程。写一些小的"hello world" programs并扩展你的知识到网站或Windows应用程序。学习编写符合您要求的程序。如果您没有任何要求,请在开始之前写下它们,否则您的程序将没有终点线。

当您准备好接受更大的项目时,您可以使用UML采取课堂和对象设计,并学习test-driven development以编写更实用的代码。了解有关不同开发方法的更多信息,如AgileScrum。更大的项目需要规划和良好的设计,所以你必须了解你的理论。

不要停留在类图等等上,花点时间思考你想做什么的主要目的是能够在强大的产品中组织你的应用程序。当你坐下来想事先想要做一些用例来说明你的程序应该做什么时,你可以从另一个角度有效地寻找,这样你可能会发现不那么明显的事情。一个抽象问题

如果你直接开始编码,你最终会陷入实现的细节,并可能忘记创建一个非常狭窄和脆弱的解决方案的目标。

有点像你在从A到B的丛林中劈开你的路,当你到达那里时疲惫地将自己扔在地上,然后创建了一条从A到B的路径,但是你真正想要的是一条铺好的公路从A到B

规划和准备

有两点:

  • 为了确保您和客户共享的问题同样的观点。
  • 为了揭示您的想法如何解决问题的潜在问题。

它是如何你做视情况而定,但关键是要实现上述两点尽可能便宜。绘制草图,讨论,制作低成本原型,create a pilot system

如果你想编写一个好的程序,尤其是你可能想要稍后改变和改进的程序,那么在潜心编写代码之前,你会做一些设计是值得的。

“创建类图和所有类型的东西”实际上只是一种在纸上写下你已经在想什么的方法:你需要什么类,它们将存储什么数据,以及类如何关联到彼此。你不必遵循任何正式的流程 - 我发现粗糙的箱子和箭头对于组织我的想法很有帮助。当我花更多时间在一个程序上时,我发现我发现了一些更好的数据组织方式,或者改进了类之间的关系。发生这种情况时,最关键的一点是,潦草地写出和重新绘制几个盒子比扔掉用精心调试过的C++编写的200行文件并重新开始更容易和更快。