问题标签 [design-decisions]

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 投票
3 回答
17203 浏览

java - 设计决策:为什么以及何时将接口设为私有?

设计决策中是否曾经使用过私有接口?如果是这样,原因是什么?您何时知道需要私有接口?

0 投票
4 回答
7430 浏览

coldfusion - 使用 cfinvoke 和 createObject 运行组件函数有什么区别?

在我公司的代码中,我经常看到通过初始化该组件的对象并调用该对象的方法来使用组件文件。但是,在我看来,使用 cfinvoke 方法更直接一些,尤其是在仅使用组件文件中的一种方法时。这两种调用组件函数的方法有什么区别,每种方法的优缺点是什么?我什么时候应该使用哪个?

0 投票
3 回答
460 浏览

.net - 为长期项目选择 .NET IoC 容器

我发现当涉及到简单的功能时,.NET 的 IoC 容器或多或少是可以互换的。因为我们的项目已经存在并且很可能会存在很长时间,所以我们倾向于根据“面向未来”来选择一个。我们认为,拥有最大动力(用户群、支持、活跃的开发人员、文档)并且最有可能在未来很多年出现的人应该得到这份工作。

根据这个标准,你会选择哪一个?

但话又说回来:我们应该关心这个标准吗?一个 IoC 容器能把我们锁定多少?我们可以/应该设计软件以便以后更改容器没什么大不了的吗?如果有怎么办?

0 投票
2 回答
188 浏览

mysql - 数据库复制是否适合这种情况/问题?

我正在调查使用复制操作模式是否是解决以下设计问题的一种方式。我之前没有复制 MySQL 数据库的经验,请在阅读时记住这一点。

我必须开发一个远程计算机(具体是平板电脑)的分布式系统,共享一个(中央)MySQL 数据库用于数据存储。该系统由一个包含 mysql 数据库的中央单元、一个与数据库接口以进行简单查询的终端和一个通过 wifi 网络与数据库接口的便携式设备(平板电脑)组成。

该系统用于管理客户、订单、销售和库存的本地商店,通过平板电脑在家里销售产品。对于每个“交易”,我需要在平板电脑从本地网络退出之前将其与 mysql 数据库同步,插入从 mysql 表中获取的必要数据,描述客户、产品等等。

我在平板电脑上使用包含这些必要数据的 SQLite 数据库,所有外​​部活动都利用它来插入新的销售、更新客户状态等。在这个转换平板电脑结束时,它必须再次与中央单元同步,因此用 mysql。

我应该如何管理跨数据库实例的数据一致性?我应该使用临时解决方案(自定义同步软件逻辑),还是像我希望和期望的那样,内置复制工具能够有效地解决这种情况的一致性问题?

现在我担心这些事务之后的数据完整性,因为可能在平板电脑返回同步之前插入或更新了其他数据。如何通过这些定期同步的远程平板电脑确保各种操作的数据完整性和一致性?

需要指出的是,在操作期间,此远程平板电脑不一定与中央节点连接(通常情况下)。所以复制/完整性操作应该在延迟模式下操作,即当平板电脑再次连接到中心节点时。

谢谢

0 投票
5 回答
813 浏览

wpf - 为什么 WPF 将附加属性用于诸如在网格中定位之类的事情?

为什么我们需要“附加属性”?它的概念让我有点困惑,因为您可以想象设置特定 DependencyObject 上甚至不存在的属性的值(它们将被默默地忽略)。这似乎是一个寻找问题的解决方案——为什么不只做 HTML 所做的事情,让父元素明确地确定子元素的定位?

也就是说,而不是:

为什么不这样(相当于HTML中的<tr>and ):<td>

也许网格只是一个不好的例子,附加属性在其他情况下更有意义?或者也许我完全错过了一些东西?

0 投票
4 回答
2324 浏览

python - 使用 Django User-Model 还是创建自己的模型?

我目前正在设计一个基于 Django 的站点。为简单起见,我们假设它是一个简单的社区站点,用户可以在其中登录并向其他用户发送消息。

我目前的选择是使用内置用户模型还是构建我自己的东西。我不需要内置的太多内容User:将没有用户名(您的电子邮件地址就是您的用户名),但您可以设置一个您选择的内部名称,可供多个用户使用(如 Facebook)。另外,我不需要权限系统,因为对其他人的访问不会基于组。所以我最终将只使用内置的电子邮件、名字、姓氏和密码字段,User其他所有内容都将放在 UserProfile 中。另一方面,内置用户系统将在站点的后端派上用场,因为我可能需要一个基于组的权限系统。

总而言之,在我看来,我宁愿构建我的一个用户模型,并且仅使用该构建来访问管理后端。

我的反映有什么问题吗?

0 投票
7 回答
1319 浏览

java - 在Java中,为什么默认情况下同一个包的成员可以访问类成员?

我知道,与 C++ 不同,如果我在声明数据成员时未指定“公共”或“私有”,则可以从同一包中的任何位置访问它。

Java 语言的设计者本可以选择相反的方式,但他们更喜欢默认公开类成员(在同一个包中)。

知道为什么吗?

0 投票
3 回答
1218 浏览

c# - 在 ASP>NET MVC 3 C# 中向存储库添加简单的业务逻辑

我有一个关于在 stackoverflow 中已经多次争论的问题的问题(对此我深表歉意),但由于从一个案例到另一个案例的主题的主观性,从未给出一般性答案:我们可以将业务逻辑添加到根据存储库模式的存储库层?我有一个带有 ViewModels 的 MVC 3 应用程序(这意味着我根本不使用 ViewData)。该模型当然是连接到数据库的 LinqtoSQL EF。目前,我直接从包含所有业务逻辑的控制器访问实体,并将视图所需的数据包装在特定的 ViewModel 中。现在我开始重构,我意识到避免代码重复的最好方法,除了优化 ViewModel 之外,是将所有查询委托给与 EF 通信的存储库,并创建控制器使用的定制方法。现在,考虑到我希望存储库返回实际对象而不是表达式,我正在考虑将小块业务逻辑委托给存储库,以使我的代码更清晰。但是为了松耦合,我想听听你的意见。在下面显示的代码(当前位于控制器中)中,除了 lprojectionPercactualValue取自数据库。因此,我想将这段代码移动到存储库并调用带有签名的方法:

该方法需要ItemId才能检索特定于该项目的值。您如何看待这个设计决策?将代码留在控制器中,移动到仍在控制器中的另一个方法(创建一个方法甚至一个专用的类)还是按照解释将其移动到存储库中更好?

0 投票
6 回答
19178 浏览

asp.net - 如何为新项目决定 WebForms 与 ASP.NET MVC 3?

可能重复:
MVC 与 WebForms
ASP.NET MVC 性能

我将在接下来的几周内开始一个新的网络项目。这是一个面向公众的网站,供一个有点著名的人使用。我有 2 个选择:使用旧的 ASP.NET 4 或带有 Razor 的新 ASP.NET MVC 3。

打算进行任何类型的单元测试。这是一个相当简单的网站,主要由 javascript、html 和 css 组成。

我需要建立一个管理面板来创建/删除/编辑页面;添加/删除图片到投资组合画廊。这可能就是我从管理面板中需要的全部内容。没什么复杂的。

免责声明除了从 Pluralsight 培训和 ASP.NET 官方教程中学到的知识外,我对 Webforms 或 MVC 没有太多经验。我确实有 css 和 html 的中级知识;没有使用 javascript 的经验。但是鉴于 javascript 与其他 OOP 语言如此相似,如果我不得不用 JS 弄脏我的手,我并不太担心。

  • 就开发速度而言,哪个更快:WebForms还是MVC
  • 两者之间的开箱即用性能如何?
  • 从长远来看,哪个更容易维护?

如果您建议不要从头开始一个 Web 项目,也许您可​​以推荐一个轻量级的 ASP.NET CMS?

0 投票
2 回答
170 浏览

.net - 为什么要以这种方式实现 CompareTo?

考虑以下代码:

我的问题是,Int16 上的 CompareTo 方法返回 -1、0 和 1 以外的值是否有任何具体原因?

ILSpy 显示它是以这种方式实现的

而该方法以这种方式在 Int32 上实现