问题标签 [project-structure]

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 投票
2 回答
787 浏览

.net - 多个有时重叠的项目的SVN项目结构和分支策略

我正在尝试为一个四人小团队提出一个可靠的 SVN 存储库结构和分支策略。我们在任何时候都有四个主要项目和几个次要项目在开发中,并且项目之间经常存在一些重叠。我们当前的策略是完全低效的,包括将这些文件夹中的每一个(大约 15 个左右)放在一个版本化的“主干”文件夹下。这意味着每当我们进行分支时,我们都会对所有 15 个项目进行分支(更新工作副本并拉下一个分支大约需要 20 分钟,以透视这一点)。

主要问题是一些项目重叠,并且一个特性或任务需要在项目 A 和项目 B 中更改某些内容并不少见(所有这些项目都与同一个数据库通信并使用相同的数据库表;此外它们共享一个业务层,因此在一个项目中更改一个类会影响另一个),因为这些项目本质上都是一个“伞形”应用程序的相关部分。例如,对于主要项目,基本上有:

  • 项目A:前端电商网站
  • 项目 B:后端执行/管理系统
  • 项目 C:前端站点的无品牌副本(相同的东西减去 CSS 样式并且功能较少)
  • 项目 D:Web 服务 API

A 和 B 交织在一起,但 B 是一个软件即服务应用程序(我们充当我们自己的客户端),而 C 作为客户的前端(A 充当我们自己公司的前端,因为 C 本质上是A 具有较少的功能且没有公司特定的详细信息)。D 只能由客户访问,但我的最终目标是让 A、B 和 C 都通过 Web 服务使用 D 的功能(基本上是吃我们自己的狗粮)。

我们刚刚决定采用三周部署策略(这意味着我们每三周进行一次生产部署),而我们当前的 SVN 策略很麻烦,并且使得分支非常痛苦。

由于多个项目有重叠,将它们全部放在一个具有分支/标签/主干格式的项目文件夹下是否有意义,或者我们应该将它们视为单独的项目?也许结合一些,例如将 SaaS 前端/后端结合在一起,我们自己的网站和 Web 服务是分开的?

参与类似项目的人的任何建议或建议都会很棒。

0 投票
1 回答
491 浏览

entity-framework - EF/Silverlight 应用程序的项目结构

我目前正在为 3 层解决方案寻找一个好的项目结构,以避免在新项目中进行不必要的工作。

该项目将包括一个核心产品,该产品具有

  • 包含 EF 代码优先模型的模型项目
  • 在服务器上有业务逻辑和通信逻辑的项目
  • 客户端上的存储库项目
  • 带有视图和视图模型的 silverlight 项目(想在这里使用 caliburn.micro)

现在的问题是客户可能有一些特殊要求,这可能导致上述所有项目发生变化。所以我的想法是我可以只使用基本结构并为客户创建相同的结构。如果没有更改,我将只有空类,它们只是扩展基类并且什么都不添加。

这给我带来了以下问题:

  • 实体框架(代码优先)中的一个问题是在一个项目中拥有基类(已经功能齐全)并且有另一个项目可以使用新字段扩展模型类吗?
  • 更改用户控件是否存在 XAML 中的问题?例如,如果我的核心中有一个由五个文本框组成的用户控件,并且我想将第二个框更改为单选按钮,但没有别的。

如果有更好的方法来处理客户特定的更改,我也会接受对项目结构的更改。

编辑:我可能会使用以下方法来解决问题。

实体框架:

首先使用代码,似乎可以让一个模型项目扩展另一个项目。这意味着我可以写如下内容:

为了完成这项工作,唯一需要的是 DbContext 中的一行:

XAML

为了在 XAML 中获得类似的行为,我必须使用 Caliburn.Micro(与 MEF 结合使用),这在这里很有帮助。

我将创建包含 ContentControl 元素的 UserControl,这些元素是使用 MEF 动态获取的。这意味着我又拥有了一个包含所有视图和 ViewModel 的核心项目。如果我需要在某处为客户交换特殊控件,我将控件更改为 ContentControl 并为其创建核心视图和 ViewModel(与更改请求之前相同)。ContentControl 的这个 ViewModel 带有一个导出接口和 ExportMetadata 以将优先级设置为 1。现在我使用另一个 UserControl 创建另一个项目,该项目具有一些其他控件而不是核心控件,并将其再次注释为具有相同接口的导出但将我的优先级设置得更高,因此加载了客户特定的控件。

简短的例子:

主要用户控件和视图模型:

核心控制:

客户特定控制:

导出界面:

导出元数据接口:

我确实用它来回答这个问题,因为我仍然对可能已经解决了类似问题的其他人的意见感兴趣。

0 投票
2 回答
10085 浏览

c++ - 如何组织 C++ 项目

我想知道在组织我的项目时什么是 C++ 最佳实践。我读过我应该将所有源文件 (.cpp) 放在 src 文件夹中,而头文件 (.h) 应该放在 include 文件夹中。它是应该的方式,还是应该将我的头文件放在源文件文件夹中?

这是我的文件夹树结构

0 投票
4 回答
191 浏览

asp.net - UI 是否应该引用存储库?

我有四个程序集;用户界面、业务逻辑、数据访问、通用。

用户界面引用了 DataAccess 中的存储库,这是不好的做法吗?我是否应该在 BusinessLogic 中创建传递方法以使 UserInterface 不耦合到 DA 程序集?

即使在 BusinessLogic 方法只调用相关的 Repository 方法什么都不做的情况下?

还是我很悬?

0 投票
2 回答
1354 浏览

eclipse - eclipse中的树项目结构

我不喜欢 eclipse 为我提供的非树结构(点分隔符而不是分支)。是否有一些插件可以让它看起来更像网豆或视觉工作室?

0 投票
1 回答
142 浏览

factory-pattern - OOD - 如何设计和构建项目以避免重新部署主应用程序(工厂模式?)

我想检查一下我对使用和实现工厂模式的理解。假设我正在设计一个应用程序来玩几个游戏(国际象棋、扑克)。游戏是从以下来源之一加载的:CSV、XML,但我希望能够在不重新编译/重新部署应用程序的情况下添加新来源(比如 DB)。我只想部署工厂逻辑和新加载器

这暗示了游戏加载器的工厂模式,类似于以下内容,但由于具体加载器返回一个列表,因此会导致循环依赖。

我找到的解决方案是创建一个新项目 Application.Model,在其中移动 Game、Chess 和 Poker,ecc 这样,Application.prj 和 Factory.prj 将只需要引用 Application.Model。并且添加数据库源只需要 factory.prj 重新编译和部署。

这是要走的路吗?或者有没有办法实现工厂模式以获得相同的结果。我不想反思。

0 投票
1 回答
740 浏览

django - 在 Django 项目中重命名文件夹但旧名称仍然存在

在阅读了有关常见 Django 项目结构的更多信息后,我将我的“媒体”文件夹重命名为“静态”,因为它包含我的 Web 应用程序的 CSS、javascript 和图像,并且没有用户上传的文件。但是,我的项目没有找到新目录,并且 favicon 仍在提供服务,可以从 localhost:8000/ media /images/ favicon.png 的旧目录下载!

在我的模板中,我直接链接到 css/js 文件,如下所示:

urls.py中也没有什么有趣的事情发生:

有任何想法吗?


编辑


出于某种原因,我认为 urls.py 不必为我的 Django 应用程序解析所有 URL?不太确定我在想什么......无论如何,我已经根据文档对我的代码进行了我认为的适当更改,但我仍然无法让它工作。

设置.py

网址.py

模板

我不确定我现在做错了什么......STATIC_ROOT当我浏览代码时似乎可以正确解决(“静态”文件夹与 settings.py 位于同一目录中)。


编辑 2


根据https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-development,我将urls.py更改为以下内容:

仍然没有运气。

0 投票
3 回答
2975 浏览

java - 为所有包导入一次 Java 类

比方说,我有以下结构:

  • src.main.java
    • 第一的
      • 一.java
      • 二.java
      • 三.java
    • 第二
      • 阿尔法.java
      • beta.java
      • 伽玛.java

我希望将first包中的所有类导入我second包中的所有类中。

现在我只是为second包中的每个类指定:

我可以为包中的所有类导入一次吗?

0 投票
2 回答
503 浏览

django - 新 Django 1.4 项目结构的用例?

我想这是对我应该在哪里创建 django 1.4 中的 django 应用程序的后续问题? 最终的答案似乎是“没有人知道为什么 Django 改变了项目结构”——这似乎有点不令人满意。

我们正在启动一个新的 Django 项目,目前我们遵循http://www.deploydjango.com/django_project_structure/index.html中概述的基本结构:

但我认为我们也期待一个多开发人员环境,其中包括具有通用项目级组件的大部分独立应用程序,因此对我来说将项目和应用程序路径分开似乎更干净。

不过,很难为此提出任何具体的、非风格的理由。(在此之前,我主要只使用单应用程序项目,所以我可能在这里遗漏了一些东西。)

主要是,我的动机是 Django 1.4 似乎正朝着后一个方向发展。我认为有一些基本原理或预期的用例推动了这种变化,但我只看到了关于它可能是什么的猜测。

问题:

  1. 1.4 项目结构变更的动机是什么?
  2. 是否存在在项目内部/外部拥有应用程序会产生重大影响的用例?
0 投票
1 回答
346 浏览

android - 版本控制 Android/Eclipse 项目及其所有 3rd 方库

所以这里是交易。假设我正在开发一个基于 Facebook SDK 和 Chris Banes PullToRefreshListView 的应用程序。我将 SDK 导入到我的工作区(我不太喜欢它,因为它填满了工作区!)并在我的应用程序中将其作为库引用。我正在对 PullToRefreshListView 进行一些更改,假设我正在添加自定义字体或更改其中一个标签的颜色。

现在,我正在使用 Git 对我的项目进行版本控制。我希望能够将我的项目放到我们的 Git 服务器上,并让我的同事能够拉取项目并开始工作,而不必费力地设置和引用相同的 SDK(与我使用的版本相同)该项目。由于我对其中一个库进行了一些更改,因此如果我不提供代码,另一个人将永远无法完全恢复该项目。

  • 在这种情况下我应该怎么做?
  • 是否可以将未编译的库放在 libs 文件夹或类似的东西中?
  • 如果不是,那么实现这一目标的正确方法是什么?

当谷歌搜索或搜索 Stack Overflow 时,我所能找到的只是如何在 libs 文件夹中使用已编译的 .jar 文件,这很好,但不是我想要的。

本质上,我正在寻找一种使用 3rd 方库构建项目的好方法。