2008-12-31 39 views
5

在询问organising my Python project然后calling from a parent file in Python之后,我发现将所有代码放在一个文件中会更容易(数据将在外部读取)。在一个文件中的所有代码

我一直认为这是不好的项目组织,但它似乎是处理我想我会面对的问题的最简单的方法。我是否仅仅通过文件计数得到了棒的错误结果,还是我没有看到大型(对我而言)项目的一些很好的指导?

+0

你是否是唯一一个在任何时候都可以使用代码的人? – 2008-12-31 20:07:30

+0

是的,因此为什么它对我来说可能是一个可行的想法。如果还有一个人,我不会考虑这个选项。 – Teifion 2008-12-31 20:09:52

回答

12

如果您打算使用任何类型的SCM,那么您将被拧紧。拥有一个文件是一个有保证的方式,可以进行大量的碰撞和合并,这些工作会随着时间的推移而不断进行。

坚持习惯并分解您的文件。如果只是为了拯救那些将来有一天不得不维护你的代码的人......

+1

+1 - 我同意SCM的观点。这是一笔交易或长期投资。软件项目不是一个程序员的遗产。现在选择一个快捷方式,你将不得不在稍后付款。所以现在好好做出一个艰难的决定和一些痛苦。无论如何增加你的代码组织技能。 – 2008-12-31 20:23:18

+1

嗯,任何体面的SCM都应该能够轻松处理同一文件中的变化,特别是当只有人将要编辑它时。即使是现存最古老的一个,我知道 - RCS - 适用于单个文件。 – ShreevatsaR 2008-12-31 20:30:51

4

如果你的代码总是会一直工作,并且没有单独使用,那么保留所有内容都没有错在一个文件中。我至少可以想到这样做的流行包(BeautifulSoup)。当然会使安装更容易。

当然,如果看起来好像你可以在另一个项目中使用你的代码的一部分,或者如果维护开始成为问题,那么担心组织项目的方式会有所不同。

在我看来,从最近一直提出的问题来看,你担心所有这些事情有点过早。通常,对我而言,解决方案稍后会解决这些问题。特别是对于较小的项目,我的目标是获得正确的解决方案,然后最佳。

2

它总是现在的经文然后论证。如果你在枪支下完成任务,那就去做吧。之后的源代码管理将成为一个问题,因为许多事情没有黑白答案。您需要对您的截止日期和代码的长期维护负责。

2

如果这是组织它的最佳方法,那么您可能是在做错事。

如果它不仅仅是一个玩具程序或一个简单的脚本,那么你应该把它分解成单独的文件等。这是唯一的方法。当你的项目变得足够大以至于你需要其他人帮助时,那么它将使SCM变得更加简单。

此外,迟早你将需要添加一个单独的实用程序到您的项目,这将需要一些共同的代码/结构。如果你有单独的源文件,那么做到这一点要容易得多,如果你只有一个大的文件。

2

由于Calling from a parent file in Python表示严重的设计问题,我会说你有两个选择。

  1. 没有库模块尝试回调到main。你将不得不重写一些东西来解决这个问题。

    [调用主程序的导入组件是不正确的依赖项。 Python不支持它,因为它是一个糟糕的设计。]

  2. 将所有内容放在一个文件中,直到找出具有适当的单向依赖关系的更好的设计。然后你必须重写它来修复依赖问题。

一个模块(一个文件)应该是一个相关代码的逻辑块。并非全部。没有一个类定义。有一个模块化的中间地带。

此外,应该有一个从主程序到组件(不依赖于主程序)的适当单向依赖关系图到实用程序库和什么不是(不知道组件或主程序。

圆形(或双方)依赖关系往往表明一个设计问题。回调是出了问题的一种方式。另一种方法是分解的圆形元素,以得到适当的单向图形。

2

看着你以前的问题,我会说在一个文件中的所有代码将是一个很好的中间状态在通往com完成重构您的项目。要做到这一点,您需要一个回归测试套件以确保您在重构项目时不会中断项目。

一旦所有的代码是在一个文件,我建议迭代在以下方面:

  1. 找出一小群相互依存类。

  2. 将这些类拉入单独的文件。

  3. 为单独的新文件添加单元测试

  4. 重新测试整个项目。

根据项目的大小,它不应该把太多的迭代你能够达到的东西合理。

相关问题