所有代码都在一个文件中

时间:2008-12-31 19:59:29

标签: python version-control project-management

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

我一直认为这是一个糟糕的项目组织,但它似乎是处理我认为我将面临的问题的最简单方法。我是不是简单地用文件计数得到了错误的结尾,或者我没有看到一些关于大型(对我而言)项目的精彩指南?

6 个答案:

答案 0 :(得分:12)

如果您打算使用任何类型的SCM,那么您将被搞砸。拥有一个文件是一种有保证的方法,可以进行大量的冲突和合并,以便随着时间的推移进行处理。

坚持约定并分解文件。如果只是为了拯救有一天必须维护你的代码的人......

答案 1 :(得分:4)

如果您的代码无论如何都要一起工作,并且没有单独使用,那么将所有内容保存在一个文件中没有任何问题。我能想到至少受欢迎的包(BeautifulSoup)这样做。当然使安装更容易。

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

在我看来,你最近一直在问的问题是,你过早地担心所有这些问题。通常,对我来说,这些问题在解决方案中稍后会得到更好的解决。特别是对于较小的项目,我的目标是获得正确的解决方案,然后最佳。

答案 2 :(得分:2)

它总是一个现在的经文。如果你在枪下完成它,那就去做吧。源代码控制将成为一个问题,因为很多事情都没有黑白回答。您需要对截止日期和代码的长期维护负责。

答案 3 :(得分:2)

如果这是组织它的最佳方式,那么你可能做错了。

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

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

答案 4 :(得分:2)

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

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

    [调用主程序的导入组件是不正确的依赖项。并且Python不支持它,因为它设计很差。]

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

  3. 模块(单个文件)应该是相关代码的逻辑部分。不是一切。没有一个类定义。模块化的中间地带。

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

    循环(或相互)依赖关系通常表示设计问题。回调是摆脱问题的一种方法。另一种方法是分解圆形元素以获得正确的单向图。

答案 5 :(得分:2)

看看你之前的问题,我会说在一个文件中的所有代码都是一个良好的中间状态,在完全重构项目的过程中。为此,您需要一个回归测试套件,以确保在重构​​项目时不会破坏项目。

一旦您的所有代码都在一个文件中,我建议您仔细阅读以下内容:

  1. 确定一小组相互依存的类别。

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

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

  4. 重新测试整个项目。

  5. 根据项目的大小,不应该花费太多的迭代次数,以达到合理的目的。