我应该如何计划我的代码库?[关闭]


10

我目前正在从事一个项目,该项目的代码行数将超过5,000行,但我从未真正想到过这个设计。我应该使用什么方法来构造和组织代码?纸和笔?UML图?还有吗


什么语言 ?

不是笔和纸。键盘和显示器。
图兰斯·科尔多瓦

Answers:


6

您可能会得到尽可能多的不同意见。但是这是我的观点。

对于初学者来说,超过5000行代码是非常小的项目。现在,您如何设计不断增长的项目。首先,您设计系统而不是代码。代码实际上是体系结构的第二位。从支持最小电流要求开始。画一些简单的组件图。我个人喜欢UML,但是任何视觉效果都很好。理想情况下,您希望在此处遵守良好的设计规范(界面,关注点分离等)。

一旦您在设计中支持最低要求,就对其进行编码。同样,请尝试遵守良好的编码惯例。

之后,随着新需求的出现,迭代地添加更多功能。理想情况下,您也要更新设计。

根据我的经验,重要的是不要在不存在现有需求的情况下设计系统。否则,您的项目将很快增长,并在短时间内变得非常复杂。再次-坚持良好做法,并从当前的具体要求开始。


我相信您的意思是“观点”,而不是“观点”。(我不能进行编辑,因为它少于六个字符。)
Maxpm 2011年

4

流程图,类图,用例图是大型项目的必备图。搜索并选择所需的外部库,并搜索可以使用的任何类似开放源代码(以学习和减少开发时间)。

我建议您购买白板,一些彩色磁铁和便利贴。这将帮助您确定任务。

ps 5000+代码行不是“大”的。CMS /论坛软件拥有超过5000多个代码行。


严重的问题:用例图有什么用?我见过的那些都是痛苦的琐碎的棍子图和气球图,没有告诉我任何我不知道的东西。
Joris Timmermans

1
MadKeithV-像任何工具一样,它们仅与使用它们的人一样好。尽量避免痛苦的琐碎情况,并专注于更复杂的情况。但是,您发现琐碎的事情,团队中的其他人则可能没有。用例或任何其他图表将有助于确保每个人都在同一首赞美诗中唱歌。
加文·科茨

@Gavin Coates-我有点明白您的意思,但是您知道我可以看看的任何在线示例来真正影响我对这些图表的看法吗?
Joris Timmermans

3

我将创建包图和类图。在包装图中,我希望以逻辑方式对类和接口进行分组。我也想创建内部包等。

替代文字

但是首先,您需要考虑程序应该做什么。您可以创建用例图或手动进行。我使用类图手动进行操作,因为我更喜欢立即获取代码,以后更容易交换到包类图。使用类图给了我我的java。如果我不喜欢它,则可以手动更改它。新代码会自动更新到我的图表中。我对代码进行了可视化的高级更新表示。确实很有帮助,因为即使我编写代码,我也总是可以花几分钟时间以图形方式查看项目的运行方式。我只是手动将实体拖放到正确的程序包中以进行组织。我认为我的代码使用更高级别的抽象包和类图会更好。

替代文字
(来源:ejb3.org

我的一些同事说我的工作方式很糟糕。...但是我喜欢它:-)


2

绝对是 我有一块小的“平板”干擦板,可用于此类操作,但请使用您喜欢的任何东西。重要的是,您可以轻松地将自己的想法下沉,并了解所有事物如何融合在一起的全局。

有些人喜欢更正式的计划,例如UML图,但是我觉得追赶微观管理每种方法的模样太容易了。但是,请再次使用您喜欢的任何东西。


编辑:您可能也对识字编程感兴趣。这个想法是,您可以计划所有事情并逐渐变得更具体。例如,您可能会说您的程序包括:

  1. 从用户处获取文本
  2. 将文本转换为图像
  3. 将生成的图像保存到磁盘

然后,您可以完善将文本转换为图像的想法。因此可能看起来像:

  1. 确定文本应占用的行数
  2. 选择文本和背景的随机颜色
  3. 以合适的格式处理

然后,您可能会改进选择随机颜色的想法,不久之后您将只编写常规代码。


2

对我而言,软件开发活动是一系列逐步细化的设计,用于解决特定问题。当您对要构建的内容有一个总体的了解时,您的设计可能会非常高级,例如“将有一个与SQL数据库和多个Web服务对话的Web应用程序”或类似的东西。然后,当您深入研究每个零件的细节时,您会在设计中获得更细粒度的信息。根据解决方案的复杂性,设计工作将进行更多或更少的迭代。最后的迭代涉及创建实现更高级别设计的实际代码。

对我来说,架构和设计之间的差异很小,它们只是我上面描述的过程的不同迭代。两者之间的界线是模糊的,并且因人而异。

确定要进入哪个级别的设计细节,针对应用程序的哪些部分以及项目生命周期中的哪些点是一种技巧。对于高风险,高复杂度的项目,在编写代码之前,您可能需要进行非常详细的设计。对于较小的项目,您可以花很少的时间进行前期设计,而只是敲出一些代码,然后看看有什么不可行的地方,然后重新设计那些区域,就可以摆脱困境。这里不仅有一个书面答案。通常,它介于这两个极端之间。

我有一篇博客文章,讨论了我在接近体系结构时使用的一些原则。按照这些思路进行思考可能对您有所帮助。某些文章专门针对.NET,但大多数并非如此。


2

我曾经问过自己同样的问题。现在,我只是练习测试驱动的开发,而不必担心。除了遵循所选架构的标准外,我根本不“计划”代码。当我开始一个项目时,我确实知道需要什么,但是随着开发的进行,我尝试保持开放的态度。通过遵循测试驱动的开发并不断重构代码,我不必“计划”代码。我只是满足一个又一个测试用例,然后设计就从重构中浮现出来。这总是比我在编码之前可以制定的任何计划更好的设计。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.