【问题标题】:Seeking Tools, Tips, Techniques to learn a new application quickly (from a coding perspective)寻找工具、技巧、技术来快速学习一个新的应用程序(从编码的角度来看)
【发布时间】:2011-06-08 14:39:09
【问题描述】:

我是一名软件开发顾问,正在寻找一些工具来帮助我在客户站点开始新项目时快速了解新应用程序。 我认为对获得应用程序或系统的高级概述有用的东西是 DB 模式图、域对象模型图、UML 图、API 等。基本上这些东西可以让我对产品有一个高级概述,以及如何从开发人员的角度使用应用程序。现在我在 Visual Studio 中使用对象浏览器,但感觉应该有更好和更多的选项来处理这类事情。我确实使用了一个名为 Doc-O-Matic 的工具,它让我对 C# 解决方案中类文件的关系有了一些了解。

我当前的项目是一个用 C#、Spring.net、NHibernate、MVC 编写的大型且复杂的应用程序,我正在努力了解设计。它看起来非常复杂并且大量使用了 OO 设计模式,而且事物非常抽象,这使得跟踪应用程序的工作变得更加困难(尽管我确信从 OO 的角度来看它设计得很好)。

在客户几乎不提供文档的情况下(通常情况下),有哪些工具和技术可以帮助我获取此类信息?您使用什么工具、技巧来快速学习新系统?

谢谢!

【问题讨论】:

    标签: c# architecture domain-driven-design uml dns


    【解决方案1】:

    您(至少我)无法了解整个系统设计及其工作原理。太费时间了。当我开始工作时,我曾经遇到过同样的问题。虽然我有一个设计得不是很好的大型项目。快速采取行动的一些步骤是:

    • 从用户的角度了解应用程序的工作原理,这意味着在您必须处理的领域使用应用程序
    • 当您熟悉问题域并知道应用程序中解决了哪些业务案例时,继续处理您必须处理的模块/代码部分 em>。
    • 最好从(前)开发人员那里获得启动。如果您没有人这样做,请尝试调试您必须更改的流程/代码,以便您可以看到涉及的组件。
    • 从尽可能小的用例开始。如果应用程序设计良好,那么在整个代码中应用相同模式的可能性非常高。所以,如果你“破解”一段代码,你就会得到全部(……至少是设计逻辑部分)。
    • 一旦你理解了就写下来,否则你会因为你在短时间内收集的大量信息而忘记它们。
    • 注释缺少文档的代码也很好,但如果您是第一次使用该应用程序,那将是一件危险的事情。您会遇到一些情况,您认为自己了解正在发生的事情,但实际上并没有。

    这只是我的一些经验。

    【讨论】:

      【解决方案2】:

      首先,不要立即认为难以遵循的程序是“从面向对象的角度来看架构良好”。 OOA&D 的目的无非是通过避免“意大利面条式代码”(包含大量跳转的大型杂乱文件的代码;几乎是在旧语言中可以完成的唯一方法),从而使代码更易于理解、扩展和重构)。但是,您可以通过过度使用设计模式来构建其他编程面食:“烤宽面条代码”(如此多的抽象层,很难深入挖掘您想要检查的实际代码)或“馄饨代码”(代码已损坏)分成如此多的小块,以至于您不断地从一个文件移动到另一个文件以跟踪单个简单算法的执行)。

      无论如何,对于 .NET 项目,VS 有一些工具可以生成类图。 Office Visio Professional 还可以与 Visual Studio 集成并扩展此功能,允许在更改图表和更改实际代码之间进行一些“来回”。同样,它可以插入 MSS 并为您提供模式图。但是,真的没有比亲身体验更好的工具了。即使是最精心设计的代码也会有一些特质,需要您了解代码库才能将问题归零(或对象之间的关系等)。我还没有遇到一个雇主,他预计新员工至少需要一个月的时间来熟悉足够的当前架构以开始工作。从承包的角度来看,这种期望可能不那么宽容,但期望有人在很少或没有外部文档的情况下潜入庞大的代码库并像奥运会短跑运动员一样开始游泳是不合理的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-02
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多