问题标签 [design-principles]

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 投票
1 回答
585 浏览

c++ - 同步来自多个对象的异步调用

我有大约 10 个对象。每个对象都是不同的类。发送到这些对象的请求(带有返回值的方法调用)来自不同的线程。

我需要同步这些方法调用,一次只能执行一个。一些请求比其他请求具有更高的优先级。这意味着如果有更多的请求等待执行并且发送了另一个 - 优先级高于任何其他等待执行的请求,则它将作为下一个执行。

我不知道如何在 C++ 中解决这个问题。我在考虑命令模式,但它需要大量的“手动”编码。我必须将每个方法调用转换为命令对象。问题在于返回值。有谁知道,这里可以使用什么模式?

0 投票
4 回答
221 浏览

php - 在哪里验证变量(使其成为设计良好的模式)?

可以说我有一个index.php文件和一些$_GET变量。在几百行代码之后,我调用了一个方法,将变量作为参数。

我应该在一切之上验证变量,还是应该在我调用的类/方法中验证它们?

记住两件事:

  1. 避免在任何地方多次验证变量..

  2. 拥有多个来源,不仅如此$_GET,而且从不同的文件多次调用这种方法。

一些代码:

0 投票
2 回答
553 浏览

ios - 下划线或无下划线

我正在与广告讨论有关 iOS 应用中商店的信息页面。在此信息页面上,我们使用分组UITableViewController显示信息,例如地址、电话号码、电子邮件地址等。顶部显示了一个带有注释的小地图……我想你明白了。看起来非常类似于 iPhone 上的联系人页面。

在线框图中,电子邮件地址带有下划线,并且该行没有披露指示符。按下该行时,应弹出电子邮件的模态视图,允许用户向给定的电子邮件地址发送电子邮件。

我们应该在此处添加下划线的 AD 参数,因为这使用户更清楚它是可按下的。此外,因为它是显示电子邮件地址/链接的常用方式。他还补充说,大量的应用程序都这样做,包括(一些?)Apple自己的应用程序在链接上使用它。

我认为这不仅与苹果的 HIG 相悖,而且也不常见。它仅在文本中的 iOS 设备上很常见。我指的是HIG,说明如下:

控件应该看起来是可点击的。iOS 控件(例如按钮、选择器和滑块)具有吸引触摸的轮廓和渐变。

如果您来自网络,则需要确保为人们提供 iOS 应用体验,而不是网络体验。请记住,人们可以使用 iOS 上的 Safari 在他们的 iOS 设备上访问您的网站。

触摸设计。不要试图在您的 iOS 应用程序中复制 Web UI 设计范例。相反,请熟悉 iOS 的 UI 元素和模式,并使用它们来展示您的内容。您需要重新检查的 Web 元素包括菜单、通过悬停启动的交互和链接。

(参考链接:苹果

他反过来说,在 WWDC13 的主题演讲之后,我的一半论点不再有效。他指的是既没有完成也没有正式发布的东西。此外,在快速浏览了 iOS7 HIG 之后,我找不到任何说明不同论点的东西。此外,例如,iOS7 上的联系人应用程序也不使用下划线。

请记住,其他字段(例如地址或电话号码)都没有下划线,但还不能按下......还考虑到有问题的应用程序是基于现有应用程序的新目标,该应用程序既没有在操作上实现下划线。鉴于这个荒谬的主题,我的问题是:它应该是怎样的?有没有下划线,这是个问题。

虽然这个问题的答案不会被用来决定我们应该采用哪种解决方案,但我仍然想知道什么是最好的。

0 投票
2 回答
30212 浏览

multithreading - 多线程设计模式

当大型项目由于共享突变而崩溃时,多任务处理似乎是一场灾难,我想说共享资源是由多个线程访问的。调试和跟踪错误的来源以及导致错误的原因变得非常困难。这让我问,有没有设计模式可以在设计multithreaded程序时使用?

我非常感谢您对此的看法和评论,如果有人可以提出可以遵循的良好设计实践以使我们的程序线程安全,那将是一个很大的帮助。

0 投票
4 回答
7257 浏览

c++ - C 的 SOLID 原则实现

我知道 SOLID 原则是为面向对象的语言编写的。

我在书中找到:罗伯特·马丁(Robert Martin)的“嵌入式C的测试驱动开发”,本书最后一章中的以下句子:

“应用开闭原则和 Liskov 替换原则使设计更加灵活。”

由于这是一本 C 的书(没有 c++ 或 c#),所以应该有一种方法来实现这些原则。

在 C 中实现这一原则是否存在任何标准方法?

0 投票
1 回答
234 浏览

oop - 工厂模式不是违反“告诉,不问”的原则吗?

程序代码获取信息然后做出决定。面向对象的代码告诉对象做事。

亚历克夏普

当我们使用工厂模式时,我们根据工厂类以外的类的属性做出决定,所以这不违反告诉,不问原则吗?

0 投票
1 回答
41 浏览

php - 什么时候抛出异常,什么时候只返回?

有时功能无法做到他们所说的那样。发生这种情况时,一些函数会抛出异常(例如 PDO 构造函数),而其他函数只会返回(例如mysql_connect会返回false)。

我有很多次不得不在其中一种方法之间进行选择,我想知道是否有一个设计原则可以解决这个问题。

0 投票
2 回答
443 浏览

php - 用于登录和注册的 COdeIgniter 结构

我正在使用 CodeIgniter 创建登录和注册系统。

目前我有一个用于登录的模型、视图和控制器,具有验证、检查用户名等的功能,以及一个用于注册的注册模型、视图和控制器。

我选择了将登录和注册分开作为原则。

所以现在我需要包含功能来编辑配置文件,检查是否登录,检查用户的角色,我想知道我怎样才能最好地做到这一点,我计划创建一个用户模型和控制器(没有视图),主用户控制器将调用模型的方法,但是方法(updateprofile、islogin 等)将在不同的模型中,例如在登录模型中。

那么这个设计是好还是坏?怎样才能做得更好。我会很感激你的建议。

0 投票
2 回答
1338 浏览

c# - liskov替换原理及异常处理

它说派生类不应该抛出任何基类不知道的异常,我试图找出它是如何工作的,在基类中我抛出 System.Exception,而在派生类中我抛出 ArgNullException()。有人能解释一下这很好吗

0 投票
1 回答
16091 浏览

java - Java中的DRY原理

我一直在阅读有关DRY原则的内容。虽然看起来很容易,但我很难理解我们如何在任何项目中实际实现它,无论是 Web 应用程序还是Swing

也许一些例子会给我带来指导并帮助我发展我的思维过程。

我试图在谷歌上搜索,但我找不到任何合适的东西。