Questions tagged «code-organization»

8
您如何组织项目?[关闭]
您是否有任何特殊的组织项目风格? 例如,目前我正在为玻利维亚的几所学校创建一个项目,这是我的组织方式: TutoMentor (Solution) TutoMentor.UI (Winforms project) TutoMentor.Data (Class library project) 您如何精确地组织项目?您是否有自己组织并为之自豪的事例?您可以共享“解决方案”窗格的屏幕截图吗? 在我的应用程序的UI区域中,我无法确定一个好的架构来组织不同的表单及其所属位置。 编辑: 如何在.UI项目中组织不同的形式?我应该在哪里/如何分组其他形式?将它们全部置于项目的根目录是一个坏主意。

19
如何更快地编码(不牺牲质量)
我从事专业编码器已有数年了。关于我的代码的注释通常是相同的:编写出色的代码,经过充分测试,但可能会更快。 那么,如何在不牺牲质量的前提下成为更快的编码器呢?出于这个问题的考虑,我将范围限制在C#中,因为这主要是我编写的代码(出于娱乐目的)或Java(在许多方面都足够类似)。 我已经在做的事情: 编写完成工作的最小解决方案 编写一系列自动化测试(防止回归) 为各种事物编写(和使用)可重用的库 在运作良好的地方使用众所周知的技术(例如,休眠) 在适合的位置使用设计模式(例如,Singleton) 这些都很不错,但是我觉得我的速度不会随着时间的推移而增加。我很在意,因为如果我能做些事情来提高生产率(甚至提高10%),那将比我的竞争对手快10%。(不是我有。) 除此之外,无论是小型Flash开发还是企业Java / C ++开发,我都从经理那里得到了回报。 编辑:关于我所说的快,以及我怎么知道我慢,似乎有很多问题。让我更详细地说明一下。 我曾在多家公司的中小型团队(5至50人)中从事各种项目和各种技术(Flash,ASP.NET,Java,C ++)的工作。我的经理们(他们直接告诉我)的观察结果是我“很慢”。 部分原因是因为我的许多同仁为追求速度而牺牲了质量。他们编写的代码有错误,难以阅读,难以维护,并且难以为其编写自动测试。我的代码通常具有良好的文档记录,可读性和可测试性。 在Oracle,我将始终以比其他团队成员慢的速度解决错误。我知道这一点,因为我会得到对此的评论;这意味着其他(是的,更高级和经验丰富的)开发人员可以以几乎相同的质量(可读性,可维护性和可测试性)在比我花费更少的时间内完成我的工作。 为什么?我想念什么?我如何才能更好地做到这一点? 我的最终目标很简单:如果我今天能在40个小时内制造出产品X,并且我能以某种方式提高自己,以便明天20、30甚至38个小时就可以制造出相同的产品,那就是我想知道的-我如何到达那里?我可以使用什么过程来持续改进?我以为这与重用代码有关,但这似乎还不够。

11
我应该如何组织我的源代码树?
我是一个独立的开发人员,主要从事Web项目(W / LAMP),有时还从事平均规模的C / C ++(非GUI)项目。 我经常在构建源代码树时遇到困难。实际上,通常,我不完成整个项目就不会倾倒整个树并重新排列三到四次,这确实需要大量的精力,而且最终结果似乎是一个折衷方案。 有时,我最终会过度分类来源-文件夹和子文件夹的树很长。在其他时候,我只是根据所有文件的最终用途将所有文件集中在一个特定的文件夹中,从而导致源文件中的文件“混乱”。 我想问: 是否有任何原则/逻辑/最佳实践可以帮助我更好地构建源代码树? 是否有任何图形/图表技术(例如:在数据流情况下为DFD)可以帮助我基于项目分析预先可视化源代码树? 采用什么策略来构造与项目关联的多媒体文件树? 关于赏金:我非常感谢会员分享自己的做法的现有答案,但是,我希望鼓励会员提供更一般性和指导性的答案(或资源),以及更多的答复。

19
我为什么要关心微观性能和效率?
C / C ++页面上的许多问题和答案,特别是或间接地讨论了微性能问题(例如,间接函数,直接函数与内联函数的开销),或者使用O(N 2)vs O(N log N)算法100个项目列表。 除非或直到我知道我有问题,否则我始终不关心微性能,也不关心宏性能,而是专注于易于维护的可靠代码。 我的问题是,为什么很多程序员这么在乎呢?对于大多数开发人员来说,这真的是一个问题吗?我是否只是幸运地不必为此担心太多,还是我是一个糟糕的程序员?

9
您如何组织高度定制的软件?
我正在从事一个大型软件项目,该项目针对世界各地的各种客户进行了高度定制。这意味着我们可能有80%的代码在各个客户之间是通用的,但是还有很多代码必须从一个客户转换到另一个客户。过去,我们是在单独的存储库(SVN)中进行开发的,而当一个新项目开始时(我们的客户很少,但客户众多),我们根据过去的项目中最能满足我们需求的代码创建了另一个存储库。过去一直有效,但是我们遇到了几个问题: 在一个存储库中修复的错误不会在其他存储库中修补。这可能是组织问题,但我发现很难在5个不同的存储库中修复和修补错误,请记住,维护该存储库的团队可能位于世界的另一部分,并且我们没有测试环境,既不知道他们的时间表,也不知道他们有什么要求(一个国家的“错误”可能是另一个国家的“功能”)。 为一个项目进行的功能和改进可能对另一项目也可能有用,或者丢失了这些功能或进行了改进,或者如果将这些功能和改进用在另一个项目中,则经常导致将它们从一个代码库合并到另一个代码库的麻烦(因为两个分支可能已经独立开发了一年) )。 如果必须在分支之间合并所有这些更改,则在一个开发分支中进行的重构和代码改进可能会丢失或造成的危害大于弊。 我们现在正在讨论如何解决这些问题,到目前为止,我们提出了以下解决方案: 将开发保持在单独的分支中,但是要通过建立一个中央存储库来更好地组织它,其中将常规错误修复程序合并到其中,并使所有项目定期(例如每天)将来自该中央存储库的更改合并到自己的更改中。这需要庞大的纪律和分支之间的合并工作。因此,我不相信这会奏效,并且我们可以保持这一纪律,尤其是在时间压力加大的情况下。 放弃单独的开发分支,并建立一个中央代码存储库,我们所有的代码都将存在于此,并通过具有可插拔模块和配置选项进行自定义。我们已经在使用Dependency Injection容器来解析代码中的依赖关系,并且我们在大多数代码中都遵循MVVM模式,以将业务逻辑与UI完全分开。 第二种方法似乎更优雅,但是这种方法有很多未解决的问题。例如:如何处理模型/数据库中的更改/添加。我们将.NET与Entity Framework结合使用来拥有强类型化的实体。我看不到如何处理一个客户所需的属性,而又另一个客户无用的属性而又不会弄乱我们的数据模型。我们正在考虑通过使用卫星表(有一个单独的表,其中特定实体的额外列与原始实体1:1映射在一起)解决数据库中的问题,但这仅是数据库。您如何在代码中处理此问题?我们的数据模型位于一个中央库中,使用该方法我们将无法为每个客户扩展。 我敢肯定,我们不是唯一一个在这个问题上苦苦挣扎的团队,我很震惊地发现关于该主题的资料很少。 所以我的问题如下: 您对高度定制的软件有什么经验,选择了哪种方法以及它如何为您工作? 您推荐哪种方法,为什么?有没有更好的方法? 您是否可以推荐有关该主题的好书或文章? 您对我们的技术环境(.NET,实体框架,WPF,DI)有具体建议吗? 编辑: 感谢所有的建议。大多数构想与我们团队中已有的构想相符,但了解您对它们的经验以及更好地实施它们的提示确实很有帮助。 我仍然不确定我们会走哪条路,也没有做出决定(单独做出),但是我会在团队中传递这一点,并且我相信这会有所帮助。 目前,男高音似乎是一个使用各种客户特定模块的单一存储库。我不确定我们的体系结构是否达到这个目标,或者我们需要投入多少资金才能使其适应要求,因此有些事情可能会在单独的存储库中保留一段时间,但是我认为这是唯一可行的长期解决方案。 因此,再次感谢您的所有回复!

6
使用嵌套的公共类组织常量
我正在处理具有许多常量的应用程序。在最后的代码审查中,发现常量过于分散,应该将它们全部组织到一个“主”常量文件中。分歧在于如何组织它们。大多数人认为使用常量名称应该足够好,但这将导致代码如下所示: public static final String CREDITCARD_ACTION_SUBMITDATA = "6767"; public static final String CREDITCARD_UIFIELDID_CARDHOLDER_NAME = "3959854"; public static final String CREDITCARD_UIFIELDID_EXPIRY_MONTH = "3524"; public static final String CREDITCARD_UIFIELDID_ACCOUNT_ID = "3524"; ... public static final String BANKPAYMENT_UIFIELDID_ACCOUNT_ID = "9987"; 我发现这种命名约定很麻烦。我认为使用公共嵌套类可能会更容易,并且具有以下内容: public class IntegrationSystemConstants { public class CreditCard { public static final String …

4
如何最好地组织类和接口文件?
好的..经过所有讨论之后,我将稍微更改我的问题以更好地反映我正在处理的具体示例。 我有两个类,ModelOne和ModelTwo,这些类执行类似的功能,但彼此无关。但是,我有一个第三类CommonFunc,其中包含一些公共功能,这两种功能都在两者中实现ModelOne,ModelTwo并且已根据进行了分解DRY。这两个模型是在ModelMain类中实例化的(它本身是在更高级别上实例化的,但是我将在这个级别上停止)。 我正在使用的IoC容器是Microsoft Unity。我不假装自己是专家,但是我的理解是,您在容器中注册了一个接口和类的元组,当您想要一个具体的类时,您会向IoC容器询问与特定接口匹配的任何对象。这意味着对于我要从Unity实例化的每个对象,都必须有一个匹配的接口。因为我的每个类都执行不同的功能(且不重叠),所以这意味着接口和类1之间的比例为1:1。但是,这并不意味着我正在为每个编写的类都刻苦地编写一个接口。 因此,在代码方面,我最终得到2: public interface ICommonFunc { } public interface IModelOne { ICommonFunc Common { get; } .. } public interface IModelTwo { ICommonFunc Common { get; } .. } public interface IModelMain { IModelOne One { get; } IModelTwo Two { get; } .. } public class …

2
NET中如何构造多个重叠的解决方案/项目?
我最近开始为具有旧的旧版代码库的新客户工作,在旧版代码库中有多个.net解决方案,每个解决方案通常托管一些对该解决方案唯一的项目,然后“借用” /“链接”(添加现有项目)其他一些项目从技术上讲,它属于其他解决方案(至少如果您按TFS中的文件夹结构进行操作) 我从未见过如此交错的设置,没有明确的构建顺序,有时解决方案A中的项目只是直接从解决方案B中托管的项目的输出目录中引用dll,有时即使已驻留该项目,也直接将其包括在内FAR在文件夹结构中消失。 似乎所有内容都已针对开发人员的延迟进行了优化。 当我面对他们为什么没有CI服务器时,他们回答说,很难像这样组织代码。(我现在正在设置它并咒骂此代码组织) 这些解决方案是围绕部署工件(需要一起部署的东西在同一个解决方案中)组织的,我认为这是一个明智的决定,但是这些解决方案(项目)的内容无处不在。 在多个解决方案/部署工件之间重用公共类库时,是否存在最佳实践的共识, 如何在VCS中构造代码 如何促进在单独的部署工件之间共享业务逻辑

5
小功能与在相同功能中保持依赖功能
我有一个类,它设置节点数组并以类似图形的结构将它们彼此连接。最好是: 保留用于初始化和连接节点的功能 在两个不同的函数中具有初始化和连接功能(并具有必须调用这些函数的依赖顺序-尽管请记住,这些函数是私有的。) 方法1 :(因为一个功能要做两件事,但它会将依赖的功能分组在一起-除非先进行初始化,否则切勿连接节点。) init() { setupNodes() } private func setupNodes() { // 1. Create array of nodes // 2. Go through array, connecting each node to its neighbors // according to some predefined constants } 方法2 :(从某种意义上说,这是自记录的,但决不要在setupNodes()之前调用BUT connectNodes(),因此使用类内部知识的任何人都需要了解此顺序。) init() { setupNodes() } private func setupNodes() { createNodes() connectNodes() …


1
包含多个项目的CMake(C ++)存储库的目录组织
我想为存储在单个(git)存储库中的一组相关但独立的C ++项目的组织提供一些建议。这些项目使用CMake。 对于一个简化的示例,我们假设有两个项目A和B,A取决于B。大多数开发A的人都会通过包装系统获得B。因此,它们只能编译A。但是,我们应该允许开发人员分别或一起编译A和B(并安装)。 这是一个建议: └── Repo1 ├── CMakeLists.txt (1) ├── A │ ├── CMakeLists.txt (2) │ ├── include │ │ ├── aaa.h │ │ ├── aaaa.h │ │ └── CMakeLists.txt (3) │ └── src │ ├── aaa.cpp │ ├── aaaa.cpp │ └── CMakeLists.txt (4) ├── B │ ├── CMakeLists.txt (2) …

2
是否应将类,枚举和其他实体放在单独的文件中?
我公司的团队负责人\建筑师认为,如果将“逻辑连接的实体”放在一个.cs文件中,则大型项目更容易理解。 我引用: “逻辑,接口和类的整体结构可以在一个地方看到,这是一个不能被驳斥的论点。要看到同一件事,但需要一堆文件,则需要使用工具,类图,R#用于导航,等等。” “遵循拙劣的理论,我可能会大声疾呼,分开的文件很酷,但是当涉及到对现有代码进行更改时,尤其是如果您不是该代码的编写者时,很难理解大量分散的文件。因此,在论坛上,您可以编写“一个枚举一个文件”,但实际上,永远不要使用这种方法“ “ ...关于开发人员之间代码库的分离,如今同时编辑同一文件已不是问题。合并已不是问题。” 我听说过很多次,我们必须为每个枚举,类等创建一个.cs文件,这是最佳实践。 但是我不能说服他。他说,他不信任任何著名的程序员,例如Jon Skeet。顺便说一下,Skeet对这个主题的看法是:找到枚举类型的最佳位置在哪里? 你怎么看?有真正的问题吗?还是只是一个口味问题,应该由组织的编码标准来规范?

1
为iOS应用开发组织代码
我一直在为iOS平台开发应用程序,并且一直在进行中,我注意到我在整理文件(.h,.m,.mm)方面做得很糟糕。在为iOS项目组织文件时,是否有任何行业标准或最佳实践? 我的文件包括自定义类(在视图控制器旁边),自定义的视图控制器,第三方内容,仅适用于iOS 5.0+的代码以及适用于早期版本的代码。我正在寻找一种解决方案,以一种使其他人(或我自己在未来几年)可以查看并理解应用程序基本结构的方式来组织事物,而不会迷失在其中找到的多个文件中。

3
聪明的PHP应用程序组织结构?
有成百上千的文件系统结构可用于众多可用的开源项目中。诸如模块,语言文件,域,第三方库,迁移,国际化,备份以及到系统其他部分的系统链接之类的东西已经产生了许多组织项目文件系统的方法。 作为一个PHP开发人员,我想知道项目之间是否开始出现任何类型的标准化。使用PSR-0,我们终于有了命名和加载文件的标准-但据我所知,关于组成系统的其余组件或如何以理智的方式处理它们,这毫无意义。 我们所处理的不只是MVC,还有很多大型项目可以正确地处理所有这些事情?

4
如何在多个项目上维护相同的代码片段
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以当前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我是从事多个Android项目的独立开发人员。我在不同项目上维护相同功能时遇到问题。例如,我的三个应用程序使用相同的2个类;由于它们是不同的项目,因此当我需要对这些类进行更改时,我需要进行三遍更改。对于这种常见问题是否有简单的解决方案?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.