软件设计

MVC-ARS是否比经典MVC更适合防止重载?

流行的设计模式MVC(Model / View / Controller)具有扩展表亲MVC-ARS(动作/表示/状态)。所添加的组件都生活在数据库层内,而不是模型的一部分,它们被它调用。详情如下: 状态如状态机。这遵循经典的状态机模式。目前状态与事件匹配,导致持续或停止状态,也可能状态改变。 行动,如所有信息技术系统,对数据采取行动。这意味着我们的交易,数据库中的数据的CRUD(创建 ..
发布时间:2017-05-12 18:27:09 软件设计

在C中计划和组织应用程序的最佳方法是什么?

我只需要在C中编写几次,似乎每次我做,它变成一些难以管理的野兽。 我已经完成我的大部分编程在C#和.Net中,所以我非常习惯于类风格的架构,但我似乎无法掌握在C应用程序中的组织。我应该把与某个文件相关的功能放在一个文件中,将功能定义放在一个文件中,另一个处理在另一个文件中。在这个问题上有没有什么好的资源? 另请参见:与面向对象的土地挣扎着C? 解决方案 以下是可能有助于您的类比 ..
发布时间:2017-05-12 18:26:42 软件设计

胖模型,瘦的ViewModels和愚蠢的视图,最好的MVVM方法?

通过对此问题的慷慨帮助,我将以下MVVM结构放在一起,以实时显示模型的更改XAML(当前日期/时间),非常好。 这个设置的一个很好的优势是 ,当你看您的视图在 设计模式的Visual Studio或 混合,您看到时间滴答作品, 这意味着在设计时,您可以从 模型访问实时数据。 在让这个工作的过程,我很惊讶地看到,从我的ViewModel到我的Model 的大部分批量移动,包括I ..
发布时间:2017-05-12 18:21:49 软件设计

无节制的编程(基本上没有条件)

我有一位同事告诉我,他曾经为一个公司工作,他们在代码中不具有条件(“if”和“switch”语句)的政策,并且他们让代码中的所有决定使用多态和(我猜)一些其他OO原则来完成。 我 这更干脆,更容易更新,但我正在寻找一个更深入的解释这个概念。或者也许它是更通用的设计方法的一部分。 如果任何人有任何资源为此或愿意解释甚至有更多的条款与此相关我可以用于找到更多的答案我很有必要。 我发现 ..
发布时间:2017-05-12 18:19:46 软件设计

你怎么知道什么时候使用设计模式?

任何人都可以阅读GoF书,了解什么样的设计模式以及如何使用它们,但是在设计模式解决问题的时候,有什么过程呢?这种模式的知识是否驱动了设计,还是有一种方法来确定如何使用模式来更改设计? 换句话说,是否有 解决方案 设计模式应该提供一种可以解决问题的结构 。解决一个真正的问题时,您必须考虑到这个问题的解决方案的许多微小变体,看看是否符合设计模式。特别是,您可能需要概括您的问题或其解决方案 ..
发布时间:2017-05-12 18:18:30 软件设计

异常真的是异常错误吗?

这是我的理解,普通的智慧说,只有使用异常才能真正有特殊的条件(实际上,我已经在这里看过这个声明了几遍)。 然而,Krzysztof Cwalina说: 关于异常的最大误解之一是它们是“异常条件”。实际情况是它们用于传达错误条件。从框架设计的角度来看,没有像“特殊条件”这样的东西。条件是否异常取决于使用的上下文,但可重用的库很少知道如何使用它们。例如,OutOfMemoryExcepti ..
发布时间:2017-05-12 18:17:13 软件设计

为什么很多语言区分大小写?

为什么很多语言区分大小写? 这只是一个继承的问题吗? C ++是区分大小写的,因为C是Java,因为C ++是区分大小写的?还是有更务实的理由? 解决方案 Unix。 Unix是区分大小写的,开发用于Unix的许多编程语言区分大小写。 计算机不是宽恕 - 大写字符不一样一个小写字符,它们完全不同。而在处理周期时,RAM等等都是昂贵的,所以不要强调编译器和计算机是“宽恕”的 ..
发布时间:2017-05-12 18:17:01 软件设计

什么是有意见的软件?

我经常看到人们说某些软件是“非常有意义的”,或者微软倾向于写“不客观的”框架。这实际上是什么意思? 解决方案 如果一个框架是有意见的,它会锁定或引导你进入他们的做事方式。 / p> 例如:有些人认为,模板系统不能提供对用户定义的方法和函数的访问,因为它使系统打开以返回原始HTML。所以一个有意见的框架开发者只允许访问数据结构。通过设计,该软件是限制性的,并鼓励设计师以他们的方式做事情 ..
发布时间:2017-05-12 18:15:10 软件设计

如何在JUnit测试中避免多个断言?

我有一个我从请求对象填充的DTO,请求对象有很多字段。我想写一个测试来检查 populateDTO()方法是否将值放在正确的地方。如果我按照每个测试的一个断言规则,我必须编写大量测试来测试每个字段。另一种方法是在单个测试中写入多个断言。真的建议按照每个测试规则执行一个断言,或者我们可以在这些情况下放松。如何处理这个问题? 解决方案 保持分开。单位测试应该告诉你哪个单位失败。保持它们分开也允 ..
发布时间:2017-05-12 18:14:45 软件设计

链接静态库,共享另一个静态库

我目前拥有一个非常大的代码库的Xcode项目,我将其称为项目X ,我将其分为一组子项目(项目A,B ,C )。 到目前为止,这些项目中的每一个都是自己编译的。它们都生成静态库。 项目B 和项目C 依赖于由项目A 生成的静态库,以便构建。 我有另一个xcode项目项目Z ,需要由项目B和C 生成的静态库。这就是问题。当项目Z 进入链接阶段时,会出现一些问题 - 在项目B和C 的libs中 ..
发布时间:2017-05-12 18:14:21 软件设计

从矩形得出正方形是否违反了Liskov的替代原则?

我是设计和学习设计原则的新手。 它表示从矩形获取矩形是违反Liskov替代原则的典型例子。 如果是这样,应该是正确的设计? 解决方案 我相信推理是这样的: 假设你有一个接受矩形并调整其宽度的方法: public void SetWidth(Rectangle rect,int width) { rect.Width = width; } 应 ..
发布时间:2017-05-12 18:12:45 软件设计

为什么一些开发人员好的UI设计如此难?

我们中的一些人很难在UI设计的更软的方面(尤其是我自己特别)。 “后端编码器”是否注定只能设计业务逻辑和数据层?有没有什么可以做的,以重新训练我们的大脑,以更有效地设计愉快和有用的表达层? 同事已经推荐了几本书我包括网站的设计,不要让我想到和为什么软件很难,但我想知道别人做了什么来删除他们 解决方案 让我直接说: 改进这一点不以准则开始。它开始重构你对软件的看法。 大多数 ..
发布时间:2017-05-12 18:10:48 软件设计

返回null坏设计?

我听到一些声音说,从方法检查返回的空值是坏的设计。我想听一些这样的原因。 伪代码: 变量x = object.method() 如果(x为空)做某事 解决方案 不返回null的理由是,您不需要检查它,因此您的代码不需要根据返回值遵循不同的路径 。您可能需要查看空对象模式,其中提供了有关此信息的更多信息。 例如,如果我要在Java中定义一个返回一个Collecti ..
发布时间:2017-05-12 18:09:07 软件设计

Haskell的大型设计?

我已经通过一系列的教程(写自己的一个方案作为我最喜欢的,与真实世界Haskell关闭第二) - 但大多数程序相对较小,单一目的。此外,我不认为其中一些特别优雅(例如,WYAS中的广泛查找表)。 我现在想编写更大的程序,更多的移动部件 - 从各种不同的来源获取数据,清理它,以各种方式处理它,在用户界面中显示,持久化,通过网络进行通信等。如何最好地构建这样的代码,以便清晰,可维护和适应不断变化的 ..

聚合,组合和依赖关系有什么区别?

解决方案 聚合意味着关系孩子可以独立于父母存在。示例:Class(parent)和Student(child)。删除课程,学生仍然存在。 组合意味着小孩不能独立于父母的关系。示例:House(parent)和Room(child)。 上述两种是包含(因此是父子关系)的形式。 p> 依赖关系是一种较弱的关系形式,代码术语表示一个类使用另一个参数或返回类型。 依赖关系是一种关 ..
发布时间:2017-05-12 18:05:36 软件设计

将遗留代码库从cvs传输到分布式存储库(例如git或mercurial)。初始仓库设计所需的建议

简介和背景 我们正在改变源代码管理系统,我们正在评估git和mercurial。总代码库是大约600万行代码,所以不是很大,也不是很小。 让我首先开始一个很简单的介绍,如何当前存储库设计看起来。 我们为完整的代码库提供了一个基本文件夹,在该级别之下,在多个不同的上下文中使用了各种模块。例如,“dllproject1”和“dllproject2”可以作为完全独立的项目来查看。 ..
发布时间:2017-05-12 18:05:14 软件设计

异常或错误代码

昨天我和同事们进行了激烈的辩论,就是首选错误报告方式。主要是讨论使用异常或错误代码来报告应用程序层或模块之间的错误。 你使用什么规则来决定是否抛出异常返回错误报告错误代码? 解决方案 我通常喜欢异常,因为它们有更多的上下文信息,当正确使用时)错误给程序员更清晰的方式。 另一方面,错误代码比异常更轻巧,但更难维护,错误检查可以不可忽视的它们更难维护,因为您必须保留带有所有错误代码 ..
发布时间:2017-05-12 18:03:27 软件设计

基于组件的游戏引擎设计

我一直在看游戏引擎设计(特别关注于2D游戏引擎,也适用于3D游戏),并且有兴趣了解一些有关如何处理的信息。我听说很多引擎现在正在转向基于组件的设计,而不是传统的深层对象层次结构。 你知道有关这些各种设计往往得到实施?我看到发展你的层次结构,但我找不到更多的详细信息(大多数只是似乎说“使用组件而不是层次结构”,但我发现需要一些努力来改变我的想法在两个模型之间)。 任何良好的链接或信息将不 ..