代码之家  ›  专栏  ›  技术社区  ›  Odd

在为其他地方的其他开发人员设计类时,您如何从构思到实现?

  •  4
  • Odd  · 技术社区  · 7 年前

    我正在寻找关于如何在一个有多个开发人员的项目中从头开始设计类的灵感 在不同的地方 (因此没有白板会议。)

    假设您的任务是实现一个相当大的特性,该特性将在项目的后期由其他开发人员使用。此功能将需要几个类,并将与项目中已有的其他类交互。当然,在继续并实现整个过程之前,您需要其他开发人员的输入。现在,你如何继续?

    我将从可用的最佳工具开始: 纸笔

    这里需要考虑的一个重要问题是,由于开发人员彼此距离较远,因此唯一可用的通信是电话和电子邮件。

    12 回复  |  直到 17 年前
        1
  •  7
  •   slf    17 年前

    实际上,我不同意“唯一可用的通信是电话和电子邮件”。网络已经发生了很大的变化,而且 lots 属于 great new ways 到 do sharing 和 most them free .

        2
  •  3
  •   eglasius    17 年前

    不要在一个大型的“全有或全无”会议上继续讨论这个问题,在这个会议上,您试图设计系统的所有类。

    从1到2个功能开始。不要开单一的大型会议,而要开快速的小型会议来评估这些功能。您将能够将学到的经验教训应用到下一个课程中。如果需要,它还可以让你深入了解细节。

    如果这将与现有代码集成,请询问相应的开发人员它是如何影响它的。

    如果我们讨论的是不同的子系统,请将集成点保持在最小值,并使它们保持简单。有时,您不能/不应该将许多其他团队的首选项放入其中,而是让其他团队执行一个简单的类,以最方便他们的代码的方式公开您的api。你不想让事情变得复杂,保持简单通常是最好的方法。

    还要注意,通过这些设计会议定义集成点的所有投资主要是在我们讨论子系统集成时。与不同部门的it团队一起工作。您不想进入他们各自开发的部分的任何内部(除非您讨论的是架构问题……但您应该在这些团队中有人能够处理这些问题……),相反,您希望关注如何集成。

    另外,我已经与分布式团队广泛合作了4年,现在我已经在上面提到的两个案例中(大型项目子系统上的不同团队,特定子系统上的相同团队),其中2年是与全球分布式团队合作的。

        3
  •  1
  •   Clement Herreman    17 年前

    从这一点出发,使用任何建模/文本编辑器作为支持:绘画、文字、WinDesign、ObjectEngining等。这是沟通的最佳方式。

    PS:我同意pen&纸是最好的,但当它是为你,而不是为外国开发人员。所以,忘记扫描和电子邮件吧^^

        4
  •  1
  •   Wim ten Brink    17 年前

    首先,我开始阅读需求和文档,试图得到一个大致的草图。这主要是在我的头脑中完成的,部分是在纸上完成的。(我有很好的记忆力。)设计的第一阶段通常是在远离我的电脑的情况下完成的!当我在车里的时候,我的脑海里可能会闪现出一些想法。有时,我甚至会在一个锁着的小房间里,把一些有臭味的东西倒进一个大瓷罐里,产生新的想法。总的来说,设计理念往往在安静的时候突然出现,而我有机会让自己的思想四处游荡。

    大约两年前,我确实有一个需要设计的大项目。另一个开发人员已经在做这件事了,但是他对这件事感到非常失望,仅仅因为几个星期后他还没有找到一个好的解决方案就离开了公司。所以,然后轮到我了。。。

    我有一个优势,我可以在家工作,所以我做到了。我花了第一天的时间在卧室里设计,在床上拿着笔、纸和文件。我有我以前同事的笔记,可以看出他把事情弄得太复杂了,所以我开始把问题分成更小的步骤。我继续浪费纸张做笔记,在头脑中做计算,并将我的笔记和文档和其他笔记进行比较。第一天,我从未用过我的电脑。

    第二天,我开始输入一个技术设计,并编写一些代码来测试一些原则。尽管如此,我还是花了很多时间远离电脑,在这段时间里我会小睡一会儿,从沉重的思绪中解脱出来。花了整整一天的时间,但最后,我把整个概念都写在纸上了。

    第三天,我打印了我的概念,并与队友分享。当我继续为代码设置基本需求时,他们可以开始评判我的设计并指出缺陷。那天,他们没有找到任何东西,尽管我在里面留下了一些。

    第二天,我和一位队友开始实施概念验证代码,这是让所有功能正常运行所必需的。再过两周,整个测试版就完成了,只需要一些调整。当我去度假时,这是团队其他成员会做的事情。

    所以,所需材料:小房间、笔、纸、床、大量咖啡、食物和放松。远离电脑,懒惰一点。(我所说的懒惰是指:避免立即编写代码。想想看,这会让人们觉得你什么都没做……)

    当为他人设计要实现的东西时,您需要自己完成设计的第一部分,尽可能完整。只需坚持做大事,让团队为小事增加空间。最重要的是:依靠你的团队在某个时刻接管你的工作,并准备好一旦他们开始行动就后退!

        5
  •  0
  •   JuanZe    17 年前

    我对这种缺乏合用地的情况没有经验,但我同意这样一种观点,即纸笔方式是开始讨论设计的最佳方式。Scott Ambler谈论POWs(普通的旧白板)的使用。。。这是同样的想法。第一种建模方法可以用数码相机拍摄一张照片,在模型变得更加坚实之前,不要浪费时间使用工具进行复杂的UML布局。在白板上拍照可以节省很多时间。

        6
  •  0
  •   Yaroslav Yakovlev    17 年前

    使用UML、CRC卡以及其他编写视频通话的方法。还有这样的服务,比如 digitalsamba

        7
  •  0
  •   Stephane Grenier    17 年前

    第一件事是写出将使用接口的代码。您希望该代码如何工作和外观。然后开始为该接口编写代码。

    让界面帮助你,而不是让你与界面抗争。

        8
  •  0
  •   m_pGladiator    17 年前

    http://mind42.com/ 例如,它并不完全用于建模类或活动图,但在交流想法至关重要时,它可能有助于协作。

    此外,您还可以使用源代码控制系统,在这里您不仅可以存储源代码原型和框架,还可以存储模型文件(例如,来自RationalRose或您最喜欢的建模工具)。

        9
  •  0
  •   RMorrisey    17 年前
    • 确保您有明确定义的、记录在案的需求。
    • 每个人都应该检查需求以获得概述。一个人可以负责初始设计。设计文档可以简单到详细列出如何在系统中实现需求,也可以复杂到充实的UML图,具体取决于项目的需要。
    • 使用电话会议来讨论设计。
    • 一些项目(特别是开源项目)通常有一个IRC频道,开发者和用户可以在这里闲逛、互相帮助、讨论问题。
        10
  •  0
  •   devarni    17 年前

    SVN或CVS是一个 因此,您应该始终能够访问您的同事部件,并可以查看现有接口 和 描述。此外,团队中的所有人都应该在自动文档系统(如Doxygen)的原型中使用文档标记。因此,为所有其他开发人员动态生成文档非常容易。 该文档应该在存储库中可用(大部分在“doc”文件夹中),这样您就可以每天使用工作副本进行更新,并获得更新的文档。

    快速原型是游戏中的另一件事。问题在于这些类是用于GUI还是仅用于程序逻辑。对于GUI,有许多框架工具可用于生成类,因此您只需要实现内部逻辑(事件处理)和与同事类的接口。 对于其他部分,我建议使用UML工具(大多数情况下,您只需要类图)。还有一些免费的工具,比如ArgoUML,也可以在Linux上运行。这些工具可以为不同的语言(C++、Java)生成很大一部分类设计

        11
  •  0
  •   Palo Verde    17 年前

    通过博客保持简单。

        12
  •  0
  •   Andrew Matthews    17 年前

    你可以做得比开发一个共享词汇表更糟糕,不仅是为了讨论问题领域,而且是解决方案领域。在解决方案领域,不要谈论特定的类,而是从以下方面描述您的潜在解决方案: design patterns

    我相信您已经熟悉了它们,但如果它们不熟悉,模式允许您根据它将使用的可重用设计来描述解决方案的整个子部分。