问题标签 [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.
design-patterns - 简单/逐渐接触设计模式的好资源
我想给自己设定一个目标,每周向自己介绍一种新的设计模式。因为我现在在实习,很难让我这样做,因为我总是感到内疚,我应该做的是工作而不是学习模式。
你知道任何好的资源吗,最好是网站教程/演示,还有书籍,涵盖设计模式和应用程序架构/模式。您是否知道任何好的资源不仅仅是文本块(这不是我学习的最佳方式),我更喜欢遵循教程或查看模式的图形演示?
我已经在谷歌上搜索了好的资源,但它们似乎要么只涵盖一些设计模式,要么就是要阅读的大量文本。
c# - UOM(计量单位)设计模式
寻找关于存储和转换已知值(即米到英尺)的一般设计模式原则。一直在谷歌搜索没有运气,所以我一定错过了一些东西。
假设单个表中有许多具有各种 UOM 的字段,最佳实践是什么?目前,许多字段都是隐含的,我们正在考虑对其进行标准化。我们希望让用户可以自由地输入他们的 UOM,但其他人可以在他们喜欢的 UOM 中查看。
我应该存储“输入的值”并转换为一些常见的原语(用户输入英尺,然后将其转换为米并存储)?我应该将此输入的英尺值存储为审计备份吗?
我不是某些数据库表的唯一消费者,其他应用程序总是在知道值+UOM 与原始用户输入值的情况下进行转换是否更好。
是否对我可能遗漏的精度有严重的转换影响。米>英尺>米对于业务应用程序的转换应该足够可靠(转换可以到小数点后第 17 位,但显示和输入的值限制为小数点后 2-4 位)
任何其他想法或链接指向我正确的方向,所以我没有重新发明一个已知问题的解决方案?
请注意,我并没有设想一些具有运算符重载的宏大解决方案,而是更多在普通 Joe Developer 可以维护的实际应用程序中起作用的解决方案。
php - 试图理解 MVC - 我已经在做了吗?
我很快就深入到越来越大的应用程序中,所以我认为了解什么是模式以及它们是如何工作的等是个好主意。所以,我在 youtube 上观看一些教程并阅读一些关于模式和设计原则和 MVC 出现了。我听说过它,但从未真正理解它,并且尚未使用 Zend 或 CodeIgniter 或其他本质上使用它的人。
反正在研究MVC这个话题的过程中,好像已经在用了。有人可以验证吗?以下是我通常如何使用登录系统来设置应用程序,例如:
login.php - 这是显示表单的 html 页面。表格提交给:
process.php - 这个类检查提交的值,并根据该值验证输入,检查密码,发回适用的错误,如果一切都是犹太洁食,它会实例化一个用户对象:
user.php - 这是一个模板化用户需要的属性和方法的类,包括将用户添加到数据库、提取配置文件信息、注销、从用户实例化私人消息对象、设置所需的会话变量等信息然后返回到 process.php,然后标头重定向回主页并成功登录。
那么……这是一个简单的 MVC 吗?在我做的研究中,登录听起来像视图,进程听起来像控制器,用户听起来像模型。我敢肯定这里有更深入的内容,但我真的很想把这些东西包起来,所以对我的逻辑进行任何调整都是非常受欢迎的。谢谢。
oop - 为什么 oop 语言不支持单独的读写访问修饰符?
我经常发现自己编写 getter 和 setter 只是因为获取和设置需要不同的访问级别。而那些getter和setter是微不足道的(getter只返回,setter只设置值,里面没有其他代码)。当您希望字段值对外部世界只读时的典型情况(并且您为每个字段编写了一大堆 getter 函数。)
Getter 和 setter 是底层的函数。调用函数比设置字段要慢,因为您需要复制参数、推送和弹出堆栈帧、复制结果等。
好吧,编译器可能会优化函数调用并内联赋值,但这是您无法控制的事情。甚至 c++ 中的 inline 关键字也只是一个提示,编译器可以随意忽略它。您应该假设调用了一个函数并且它会变慢。
此外,从来没有语言(如 C#)支持属性并模仿这个东西,但它们只不过是看起来像一个字段的函数,你甚至无法分辨它是一个函数还是一个字段(没有 IDE 的帮助)。
如果我们可以为写入和读取设置不同的访问修饰符(例如像文件系统那样),而不只是告诉它会违反封装的教条原则,会出现什么问题?
design-patterns - 掌握创建者与依赖注入
GRASP Creator 与依赖注入完全矛盾吗?
如果不是,请解释原因。
web-services - 关于如何在符合 REST 原则的同时尽可能有效地处理集合的 REST API 问题
我对 REST 很陌生,但据我所知,我了解以下 URL 符合 REST 原则。资源分布如下:
但是,如何优化这个示例 API?例如,我的图书馆中有 10K 本书,我想获取图书馆中每本书的详细信息。/library/book/<id>
我真的应该对给定的每个 id强制进行 http 调用/library/book
吗?或者我应该启用多个 id 作为参数?/library/book/<id1>,<id2>...
并且喜欢一次批量获取 100 个 id 吗?
REST 原则对这种情况有什么看法?你的意见是什么?
再次感谢。
c# - UML 帮助 C# 设计原则
我在理解下面的 UML 时遇到问题:
PersistentSet
具体来说,和之间的关系是什么ThirdPartyPersistentSet
?PersistentObject
和之间有什么关系ThirdPartyPersistentSet
?
请注意,UML 来自 Martin C. Robert,Martin Micah 的敏捷原则、模式和 C# 实践,2006 年。第 10 章
提前致谢!
c# - UML 帮助 C# 设计原则
谁能指出下图的含义:
- PolicyLayer和PolicyServiceInterface是什么关系
- PolicyServiceInterface和MachanismLayer是什么关系。
C# 代码也将不胜感激!
请注意,UML 来自 Martin C. Robert,Martin Micah 2006 年的 C# 中的敏捷原则、模式和实践。
添加于 15 2011/6/2
执行以下具有相同含义的操作: 1) 一端为三角形的实线 2) 一端为三角形的虚线
2011/6/3 1日添加
有什么区别:1)一端带箭头的实线 2)一端带箭头的虚线
示例中的示例以及以下链接中的 PersistentObject 和 ThirdPartyPersistentSet:
添加于 2011/6/3 第 2 次
PolicyLayer 和 PolicyServiceInterface 的关系可以如下:
关于
php - 直接调用变量属性 vs getter/setter - OOP 设计
我知道这可能是主观的,但我从 Google 阅读了这个 PHP 优化页面,他们建议直接使用变量属性而不需要 getter 和 setter。可以理解的是,我看到了性能提升,但这真的是一个很好的设计实践吗?
他们使用 getter/setter 的示例:
建议优化:
这在我的设计过程中将是一个可喜的变化,因为我看到对 getter/setter 的需求正在消失,但是这样做可能会出现哪些其他障碍/好处?