问题标签 [code-organization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
10912 浏览

java - 推荐的源代码管理目录结构?

我将使用 Subversion 对新的 J2EE Web 应用程序进行源代码控制。你会推荐什么目录结构来组织代码、测试和文档?

0 投票
18 回答
108571 浏览

python - Python 单元测试在哪里?

如果您正在编写库或应用程序,那么单元测试文件在哪里?

将测试文件与主应用程序代码分开很好,但将它们放在应用程序根目录内的“测试”子目录中会很尴尬,因为它会使导入您将要测试的模块变得更加困难。

这里有最佳实践吗?

0 投票
2 回答
1802 浏览

c# - 组织扩展方法

你如何组织你的扩展方法?假设我有对象类和字符串类的扩展,我很想将这些扩展方法分成 IE 类:

我是让这太复杂还是有意义?

0 投票
12 回答
245726 浏览

c# - 'using' 指令应该在命名空间内部还是外部?

我一直在通过一些 C# 代码运行StyleCop,它不断报告我的using指令应该在命名空间内。

using将指令放在命名空间内部而不是外部是否有技术原因?

0 投票
4 回答
2382 浏览

python - Python 代码组织问题:Eggs + Packages + Buildout + Unit Tests + SVN

我有几个共享通用模块的 python 项目。直到现在,我一直在……咳咳……保留公共代码的多个副本并手动同步。但我显然更愿意做其他事情。

现在在我看来,好像 zc.Buildout 可能是我需要的。我想我应该做的是将系统的每个可重用组件放入一个单独的鸡蛋中,然后使用 buildout 将它们组装成项目。

我还认为对于任何特定模块,我应该将单元测试放入单独的包或鸡蛋中,这样我就不会在每个项目中安装组件的单元测试副本。我只想在开发我的库的地方进行单元测试,而不是在刚刚使用它的地方进行单元测试。

所以也许我想要这样的东西

等等

其中 app1 和 app2 都是具有自己的代码和测试的独立应用程序,但也包含并使用 lib1 和 lib2。而 lib1/test、lib1/code、lib2/test、lib2code、app1、app2 是独立的鸡蛋。这听起来对吗?

然而,我现在很困惑。我假设当我开发 app1 时,我希望 buildout 将 lib1、lib2 和 app1 的副本拉到单独的工作目录中,而不是将这些库的副本直接放在 app1 下。但这如何与我的 SVN 源代码控制一起使用?如果工作目录是使用 buildout 动态构建的,它不能是一个实时 SVN 目录,我可以从中将更改检查回存储库吗?

我是否误解了 buildout 的使用方式?我会更好地采用完全不同的方法吗?你如何在项目之间混合源代码控制和模块重用?

更新:感谢目前已回答此问题的两个人。我正在对此进行更多实验。

0 投票
6 回答
3698 浏览

embedded - 您如何在嵌入式项目中组织代码?

高度嵌入(有限的代码和内存大小)项目对代码组织提出了独特的挑战。

我见过很多完全没有组织的项目。(主要是硬件工程师,根据我的经验,他们通常不关心代码的非功能方面。)

但是,我一直在尝试相应地组织我的代码:

  1. 硬件特定(驱动程序,初始化)
  2. 特定于应用程序(不太可能被重用)
  3. 可重复使用,独立于硬件

对于每个模块,我都尝试将目的保持在这三种类型中的一种。

由于嵌入式项目的规模有限和对性能的重视,它经常保持这种组织。

在某些情况下,我当前的项目是在具有 8k 闪存和 256 字节 RAM 的 MSP430 上的有限 DSP 应用程序。

0 投票
8 回答
5132 浏览

c++ - 扩展现有类,如命名空间 (C++)?

我用第二人称写作只是因为它对你来说很容易。

您正在使用游戏引擎,并且真的希望特定的引擎类有一个新的方法来执行“bla”。但是您不希望将“游戏”代码传播到“引擎”代码中。

所以你可以用你的一个新方法从中派生一个新类,并将该代码放在你的“游戏”源目录中,但也许还有另一种选择?

所以这在 C++ 语言中可能是完全非法的,但你起初认为,“也许我可以通过我自己的头文件向现有类添加一个新方法,其中包括‘父’头文件和一些特殊语法。这在工作时是可能的例如,带有命名空间..."

假设您不能跨多个标头声明一个类的方法(并且您非常确定您不能),那么支持“中间件/引擎/库”和“应用程序”之间明确划分的其他选项是什么,您想知道?

0 投票
11 回答
188449 浏览

c - 在另一个中包含一个 C 源文件?

另一个文件中#include的文件可以(甚至推荐/良好做法)吗?.c.c

0 投票
8 回答
8738 浏览

javascript - jQuery 和“有组织的代码”

我最近一直在努力理解组织 jQuery 代码的最佳方式。我之前问了另一个问题,我认为我不够具体(在这个问题中找到)。

我的问题是,您制作的应用程序越丰富,您的客户端越快失控。考虑这种情况...

现在这种情况并非不可能。我并不是说这是正确的做法,但发现自己进入 jQuery 命令的几个级别并开始想知道在屏幕开始融化之前还可以添加多少逻辑的情况并不少见。

我的问题是人们如何管理或组织以限制其代码的复杂性?

我在另一篇文章中列出了我是如何做到的...

0 投票
2 回答
404 浏览

asp.net-mvc - 为什么 ASP.NET MVC 上的控制器是基于名称的?

在 ASP.NET MVC 中,我们需要为所有控制器使用后缀“Controller”。这似乎是不必要的限制 - 是否有技术原因?

我主要只是好奇,但可以看到更灵活的命名规则可以改善代码组织的情况。使用反射来搜索Controller派生类难道不能很容易地发现可能的控制器类吗?或者要求控制器类标有ControllerAttribute?