- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
首先,让我们同意命名空间应该与文件夹结构相匹配,并且每种语言的工件应该在它自己的文件中。
(参见 Should the folders in a solution match the namespace?)。
下一个问题是文件夹实际上应该如何在磁盘上组织。
假设我在 A.B.C 命名空间中有 ClassC,在 A.B.C.D 命名空间中有 ClassD。
我们还假设每个命名空间都内置到它自己的程序集(项目)中,并且命名空间按照公认的最佳实践从右到左具有依赖关系(A.B.C.D 可以依赖于 A.B.C,A.B.C 可以依赖于 A.B,A.B 可以依赖于 A)。我很欣赏每个命名空间不必位于单独的程序集中,但在一般情况下,我们将在单独的程序集中有一些命名空间,我的示例说明了这一点。
我可以看到(至少)两种创建文件夹树的方法——我称之为“嵌套文件夹”和“平面文件夹”:
一个
--A.csproj
--乙
----A.B.csproj
----C
------A.B.C.csproj
------classC.cs
------D
--------A.B.C.D.csproj
--------classD.cs
或
一个
--A.csproj
A.B
--A.B.csproj
A.B.C
--A.B.C.csproj
--classC.cs
A.B.C.D
--A.B.C.D.csproj
--classD.cs
你会看到我已经做了一些假设:
嵌套文件夹看起来更自然(我们都喜欢层次结构),但在大型解决方案中导航可能有点困难:
当您在 VS 中查看您的解决方案时,它会显示项目的平面列表而不是嵌套 View 。这看起来更像是“平面文件夹”,因此在磁盘上组织文件夹以匹配 VS 中的 View 可能有好处。
如果查看磁盘上的每个文件夹,您将看到该项目的文件夹 artefacts 以及命名空间的子文件夹:以 C 为例:
C
--bin
--D
--对象
--属性
--A.B.C.csproj
--classC.cs
根据 D 的真实姓名,D 是命名空间文件夹而不是 C 命名空间中的组织文件夹可能并不明显。
我知道我们从 .NET(8 或 9 年前)和 Java 的第一天起就已经有了文件夹和命名空间,但是,就个人而言,我们似乎没有就最佳实践项目达成共识大型解决方案的组织。我真的很想知道你们的想法。
谢谢
迈克尔
最佳答案
我使用平面方法。我发现嵌套层次结构太难维护了。我将我的项目分为几个解决方案,考虑到最大的可重用性和交叉引用,并且总是觉得这令人满意。示例(项目缩进):
CompanyName
CompanyName.Core
Class1
Struct2
Enum3
CompanyName.Data
CompanyName.Web
CompanyName.Projects
CompanyName.Projects.Core
CompanyName.Projects.ProjectX
CompanyName.Projects.ProjectX.Core
CompanyName.Projects.ProjectX.Website
CompanyName.Projects.ProjectX.ToolY
等等等
编辑:删除废话
关于c# - c# 解决方案中的命名空间和文件夹结构 : how should folders on disk be organised?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/400945/
关于w3total缓存工作机制,我在互联网上搜索,但找不到有关这两个的任何正确信息。w3Total 缓存中的磁盘增强型和磁盘基本型有什么区别?为什么磁盘增强型优于磁盘基本型?使用磁盘增强和磁盘缓存选项
我在启动时一直使用这两种方法,对我来说,功能是相同的。到目前为止,我创建的实例仅用于计算。我想知道 GCE 磁盘镜像和快照在技术方面有何不同,以及在哪种情况下使用其中一种更好。 最佳答案 快照反射(r
我正忙于迁移到 Azure 虚拟机。 我的 SQL Server 数据库 MDF 应该驻留在操作系统磁盘上还是数据磁盘上(据我所知,这是一个页 blob - 也称为 Azure 磁盘驱动器)? 我本以
背景 我一直在使用 Win32_DiskDrive 来查找闪存(USB 笔、SD 卡等),但在其他计算机上进行一些测试后,我发现它们并不总是被发现。因此,我使用 Win32_LogicalDisk,因
我知道 stackoverflow 中也有类似的问题: WIX:default directory in WixUI_InstallDir, WIX installer root directory
如何使用 Golang 包获取 Dispart 详细信息(磁盘名称(例如:磁盘 0)空闲和磁盘使用情况) 最佳答案 您可以使用此包 github.com/shirou/gopsutil 获取 disk
我希望能够确定CD驱动器中的音乐专辑CD。例如,如果某人声称驱动器中的CD是Eminem-Eminem Show,那么我希望能够验证CD确实是The Eminem Show。 有任何想法吗?我已经申请
我需要对文件执行随机更新。让我需要更新偏移量 k1、k2、....、kn 处的文件。从性能的角度来看,如果我按任何顺序写入是否重要,或者如果我按偏移量的递增顺序写入,性能会提高吗?更具体地说,我将在
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 10年前关闭。 Improve this
我准备发布一个只对普通硬盘有效的工具,而不是 SSD(固态硬盘)。事实上,它不应该与 SSD 一起使用,因为它会导致大量读/写而没有实际效果。 任何人都知道检测给定驱动器是否为固态的方法? 最佳答案
NSWorkspaceDidMountNotification 可以很好地获取刚刚安装的磁盘的信息。但是如何在我的应用程序启动之前获取已经安装的磁盘的信息? 命令行:“diskutil list”和“
NSWorkspaceDidMountNotification 可以很好地获取刚刚安装的磁盘的信息。但是如何在我的应用程序启动之前获取已经安装的磁盘的信息? 命令行:“diskutil list”和“
我想知道为什么我的模拟器不断增加它在磁盘上的大小。否则它的运行速度比第一次慢。有什么解决办法吗?我不希望我的模拟器也保存它的状态。这个怎么做? 最佳答案 我发现从设置>存储>释放空间从模拟器手机中删除
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我想知道,是否有某种类型的光盘 ID 可以用来在我的数据库中搜索以查看该光盘是否已被扫描?所有光盘都是由我创建的,通常在 Windows 上刻录。 -编辑-我可以比较写入时间和卷标以查看光盘是否已被扫
fmdb 文档说,如果您将文件系统路径传递给databaseWithPath:它将为您创建一个文件: 文件系统路径。该文件不必存在于磁盘上。如果它不存在,则会为您创建。 我正在使用以下代码获取我的文件
在 Azure 中创建 Windows Server 虚拟机后,我注意到操作系统磁盘(C: 驱动器)大小只有 30GB。 我的印象是所有新虚拟机都有 127GB 操作系统磁盘大小。 (Expand t
我在Google dataproc中默认设置(4个vCPU,15GB Ram)创建了一个群集。 在完成几次养 pig 工作后,集群中有2-3个不健康的节点。 因此,我升级了工作虚拟机的vCPU(4至8
有人可以解释一下在以下上下文中刷新到磁盘的含义吗?如果我将数据写入文件系统上的日志,这是否意味着我将其放在磁盘上?在什么时候您会/应该将文件刷新到磁盘? This suggests a design
下面的输出属于 FAT32 磁盘文件。我想用 C 程序显示所有文件以及每个文件相应分配的扇区。 按照指南我什至无法找到根目录。 (示例1 - 在http://www.tavi.co.uk/phobos
我是一名优秀的程序员,十分优秀!