如何组织项目结构

参考:How do you organize your projects? [closed]

地址:https://softwareengineering.stackexchange.com/questions/40394/how-do-you-organize-your-projects

在设计项目和布局架构时,我从两个方向开始。首先,我查看正在设计的项目,并确定哪些问题需要解决。我看看将要使用它的人,从一个粗糙的UI设计开始。在这一点上,我忽略了数据,只是看看用户要求什么和谁将使用它。

一旦我对他们要求的内容有了基本的了解,我就会确定他们要操作的核心数据是什么,并开始为这些数据进行基本的数据库布局。然后,我开始问一些问题,以定义围绕数据的业务规则。

通过独立地从两端开始,我能够以一种将两端结合在一起的方式来规划一个项目。我总是试着把设计尽可能的分开,然后再把它们融合在一起,但是当我继续前进的时候,要记住每个设计的要求。

一旦我对问题的每一端都有了一个很好的理解,我就开始为解决问题而设计项目的结构。

创建项目解决方案的基本布局后,我将查看项目的功能,并根据所做工作的类型设置所使用的名称空间的基本集合。这可能是诸如帐户,购物车,调查等。

下面是我通常从这里开始的基本解决方案布局。当项目得到更好的定义时,我会对其进行细化,以满足每个项目的特定需求。有些领域可能与其他领域合并,我可以在需要时增加一些特殊的领域。

SolutionName

.ProjectNameDocuments
  对于大型项目,需要与其一起保存某些文档。为此,我实际上在解决方案中创建了一个单独的项目或文件夹来保存它们。

.ProjectNameUnitTest
  单元测试始终取决于项目-有时它确实是
       基本功能,可以捕获极端情况,有时会设置为完整代码
       覆盖范围。 我最近将图形化单元测试添加到了军械库。

.ProjectNameInstaller
   有些项目有特定的安装要求,需要在项目级别上处理。
.ProjectNameClassLibrary
   如果需要Web服务、API、DLL等。
.ProjectNameScripts (**Added 2/29/2012**)
   我增加这个是因为我刚刚在我的当前项目中发现了一个需求。该项目包含以下类型的脚本:SQL(表、pros、视图)、SQL数据更新脚本、VBScripts等。
.ProjectName
    .DataRepository
       包含基类和数据库通信。有时还保存包含任何SQLProcs或其他特定代码的目录。
    .DataClasses
       包含在项目中使用的基类、结构和枚举。它们可能与数据存储库中的数据相关,但不一定连接到数据存储库中的数据存储库中。
    .Services
       对数据执行所有CRUD操作,这样就可以更改存储库,而无需重写任何更高级别的代码。
    .Business
      执行任何数据计算或业务级别数据验证,与服务层进行大多数交互。
    .Helpers
      我总是创建一个包含助手类的代码模块。这些可能是对系统项、标准验证工具、正则表达式或自定义项的扩展。
    .UserInterface
       用户界面是用来显示和操作数据的。UI窗体总是按照功能单元命名空间组织,并为共享窗体和自定义控件提供额外的文件夹。

------------------------------------

我喜欢把我的项目分成几个层次

这样,管理循环依赖关系就更容易了。例如,我可以保证没有任何项目错误地导入视图项目(层)。我也倾向于把我的层分解成子层。所以我所有的解决方案都有这样的项目清单:

  • Product.Core
  • Product.Model
  • Product.Presenter  控制层
  • Product.Persistence  持久层
  • Product.UI
  • Product.Validation
  • Product.Report
  • Product.Web

它们是我的应用程序中更大的“构建块”。然后,在每个项目中,我在名称空间中组织得更有逻辑,但变化很大。对于UI,在创建许多表单时,我尝试在空间划分中进行思考,然后为每个“空间”创建名称空间。假设有一堆用户首选项、用户控件和表单,我将为它们提供一个名为UserPreferences的名称空间,等等。

-------------------------------------

当我在.NET中编写代码时,有一种明显的趋势,即有一组相关的功能。它们中的每一个都可能有一些相同的子集。我喜欢在身体上突破主要的群体--每一个VS项目中的一个。然后,我进一步使用程序集对其进行逻辑细分。按照这个模式,我当前的一个项目如下所示:

Wadmt (solution)

  • Wadmt.Common
  • Wadmt.Data
    • Wadmt.Data.MySql
    • Wadmt.Data.SqlServer
    • Wadmt.Data.Oracle
  • Wadmt.Domain
  • Wadmt.Services
  • Wadmt.Tests
    • Wadmt.Tests.Common
    • Wadmt.Tests.Domain
    • Wadmt.Tests.Services
    • Wadmt.Tests.Integration
  • Wadmt.Web

希望这对你有用。分离的程度花了我一段时间才弄清楚。

-------------------------

总结:

其实什么乱七八糟的分层方式都有了,见得多了以后反而不太在乎项目的分层结构;

最经典的当属三层架构

然后是是四层

然后是多层;

…………

原文地址:https://www.cnblogs.com/Tpf386/p/12002848.html

时间: 2024-11-02 02:18:12

如何组织项目结构的相关文章

项目管理(九)- 组织项目资源

接着上篇, 本篇是进入正式开发阶段最后一篇文章,是介绍以何种方式去组织项目的资源 项目组织至少包含2方面的内容:项目资源的来源和项目任务的分配方式. 完成项目所需要的资源很显然是来自于企业的相关智能部门.那么,如何判断企业应该为项目才去什么样子的资源分配方式呢?判断的主要依据有两个方面:一是对实现项目成果的承诺程度:二是对项目资源的利用程度 1.对项目实现成果的承诺程度 项目组织和职能组织的最大区别在于前者是以项目成果为导向的,二后者是以部门职能为导向的. 项目管理的思维方式即以项目成果为导向的

Java开发学习心得(三):项目结构

3 项目结构 经过前面一系列学习,差不多对Java的开发过程有了一定的了解,为了能保持一个良好的项目结构,考虑到接下来要进行开发,还需要学习一下Java的项目结构 下面以两个项目结构为参照 图1 图2 第一个是我自己学习时的Demo,一边学一边建文件,应该有些错误的地方,第二张是从网上看到的一个结构比较清晰的图片 图1的结构完整一点,就以图1为主一点点讲起 3.1 src 因为我用的是Maven,大方向上项目两大文件夹分别是src和target,以及一个pom.xml配置文件,src目录里是项目

工作分解结构WBS、组织分解结构OBS、资源分解结构 定义和区别(含例子)

工作分解结构WBS 用途:用来显示如何把项目可交付成果分解为工作包 组织分解结构OBS 按照组织现有的部门.单元或团队排序,并在每个部门下列出项目活动或工作包.如运营.采购等部门只需要找到其所在的OBS位置,就能看到自己的全部项目职责. 资源分解结构 按资源的类别和类型,对团队和实物资源的层级列表,用于规划.管理和控制项目工作.每向下一个层次都代表对资源的更详细描述,知道信息细到可以与工作分解结构相结合,用于规划和监控工作. 原文地址:https://www.cnblogs.com/jinsha

云笔记开发记录一:node-webkit 项目结构?

node-webkit 项目结构? 一般用过nodejs写过点小东西的人,都应该知道nodejs项目一般都有一个package.json文件,这个package.json文件,该文件定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据). 为什么要提 nodejs 的 package.json文件 呢,因为, node-webkit 项目它也有自己的 package.json文件 . 但是这两者是不同的! node-webkit的package.json是用来配置n

java创建运行以及项目结构

一 创建java project 再src下添加class,选择一个class添加main方法作为程序的入口 二.项目结构: src下添加不同的包,命名方法为com.jikexueyuan.hello.main/model/view.此时硬盘中会有项目名称文件夹下有bin和src,全部对应包的一级级目录,src中存放java文件,bin存放class二进制文件.此时还可以创建lib文件夹,用于存放第三方的库.将库文件add to path即可被引用. 三.eclipse代码自动补全 Window

ThinkPHP - 配置项目结构

配置项目结构: 项目如果分为前后台使用. 那么最关键的就是,使用公共部分文件的划分,其中最为核心的就是公共配置文件的使用. 下面介绍的就是怎么将前后台项目的公共部分提起出来. 首先是其他公共的文件夹: 这是最顶层的文件配置. 详细的目录说明,看下面: E:\PHP\WWW\THINKPHP │ admin.php //后台主入口文件 │ index.php //前台主入口文件 ├─Admin //后台文件夹 │ ├─Common │ ├─Conf //后台配置文件夹 │ │ config.php

上门洗车APP --- Androidclient开发 之 项目结构介绍

上门洗车APP --- Androidclient开发 之 项目结构介绍 前言 尽管公司项目较紧,但还是抽空给大家继续更新. o_O"~ 欢迎大家的关注,非常高兴和大家共同学习.前面给大家分享了项目中的以下内容: 上门洗车APP --- Androidclient开发 前言及业务简介 上门洗车APP --- Androidclient开发 之 网络框架封装介绍(一) 上门洗车APP --- Androidclient开发 之 网络框架封装介绍(二) 之前有非常多朋友私信过来说想打包一份源代码学习

[Erlang危机](2.1)项目结构

?? 原创文章,转载请注明出处:服务器非业余研究http://blog.csdn.net/erlib 作者Sunface Project Structure The structures of OTP applications and of OTP releases are different. An OTP application can be expected to have one top-level supervisor (if any) and possibly a bunch of

CSLA的项目结构(一)

由于我也是边看边学,在很多概念不是很清晰的情况下,也不好将书中的大段内容全部摘抄过来,所以结合项目源码先分析再总结,就成目前比较可行方案,第一篇先从项目结构入手. 项目源码下载后,主要的功能集中在Core项目文件夹的CSLA项目中,其他项目或从此处继承,或引用此项目,因此对整个项目的分析从此开始. 需要说明的是:解决方案\Core文件夹下,CSLA与CSLA.Net4的类基本是相同的,只是针对的编译环境不同,其他类似的文件夹也是这样的情况. 因为找到了主要的项目,其他在我的机子上不能编译或我用不