问题标签 [library-design]

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 回答
258 浏览

c++ - 为什么 C++03 文件流不接受字符串构造函数参数?

为什么下面的代码能编译进去C++11而不能编译进去C++03gcccl

为什么C++03流不接受std::string作为构造函数参数?这个决定是基于某事还是偶然发生的?

0 投票
1 回答
423 浏览

javascript - 面向对象代码与 MVC 模式 - 初始化页面时要遵循哪个?

回复:1

如本SO Post所述,它们并不相互排斥

这是与此更一般的SO Post相关的特定问题

然而,控制器应该路由来自用户的所有呼叫。我通过初始化我的元素(设置 addEventListener)并让它们调用模型来做到这一点。

例如:(来自我的控制对象)

但是随着我的网站的增长,我的控制器变得越来越大。

我可以做的一件事是将初始化移动到它各自的模块中。例如,我的登录逻辑位于一个名为 ModelType 的对象中。初始化在对象 Control 中。

为了减小 Control 的大小,我可以将初始化移到 ModelSignIn 中。

或者我可以将我的控制器对象分解为多个对象 - ControlPage1、ControlPage2 等。

哪种方式最好或其他方式最好?

将初始化移动到相关对象的一个​​好处是,现在该对象是自包含的,您可以将其复制粘贴到其他应用程序中。缺点是这似乎打破了 MVC 模式。

0 投票
2 回答
82 浏览

php - 如何处理不断增长的控制器类?

0 投票
2 回答
275 浏览

c++ - 为什么标准类型不提供来自分配器不同来源的转换构造函数/赋值

例如,为什么不template< typename Elem, typename Traits, typename Alloc > basic_string { ... }提供:

实现这样一个尊重两个分配器的转换构造函数似乎相当简单。当前的情况使得在分配器不同的类型之间进行接口变得非常麻烦。

0 投票
1 回答
163 浏览

.net - .NET IoC:预配置库组件以便于使用

前段时间我有一个类似的问题,但对整个 IoC/DI 主题以及我想要实现的目标的掌握要少得多,所以又来了....

我正在建立一个图书馆供我们​​公司内部使用。公共 API 中最常用的部分已经对 IoC 友好,但在较低级别的区域中,仍有相当多的新功能在进行,我想摆脱它们(尽管此时更多是出于正式原因而不是实际原因必要性)。

这本身很容易做到,但是当然每次使用库时,都必须重新连接所有组件。由于这看起来几乎总是一样的,我通常只是将这些默认注册包装在 Autofac 模块中并完成它。

(这里的问题 1:这个模块是放在主库程序集中还是应该是一个独立的包,即使 Autofac 可能是库中唯一使用的 IoC 容器?)

现在的问题是,我是公司目前唯一真正了解 IoC 目的或知道 IoC 容器做什么的开发人员,更不用说它是如何使用的了,告诉其他人他们是一个坏主意可以使用 Autofac 包,也可以使用穷人的 DI 手动构建十几个对象的图形。(我认识这些人——他们只会不理会它,自己建造他们需要的东西,因为无论如何我对我所有的小班都很疯狂。)

我想解决这个问题的是添加类似服务定位器的东西,从中提取常用类型的预配置对象(看起来与 Autofac 模块连接的那些相同),可能由轻量级 IoC 容器在内部连接.

我知道服务定位器是一种反模式以及它会产生哪些类型的问题,我永远不会将其用作(我的)对象组合方式,而是作为 IoC/SOLID 受损的“捷径”,是否可行? 我还有什么其他选择?在这种情况下,将 Autofac 模块包含在库中并让“服务定位器”充当它的前端是否有意义?

0 投票
5 回答
172 浏览

c# - 关于 OO 和库设计的几个问题

好的。我对 OO 和库设计的某些方面有一些疑问。

  1. 图书馆应该自给自足吗?例如,它可以使用外部依赖注入框架,还是应该以更轻量级的方式实现它自己?

  2. Liskov 的替换原则如何适用于知道方法或类行为的多态性?您只是期望它按应有的方式工作吗?

  3. 在源代码部分,将接口与实现分开放置在一个单独的文件夹(例如,/interfaces)中是一个坏习惯吗?

  4. where T : type在接口上而不是在它们的实现中分隔泛型类型 () 也是一个坏习惯?(这个我不这么认为,只是为了确认一下)。

  5. 当对象关系是“可以做”和“是”时,接口是否优于抽象类,并且不需要方法等的默认实现?

而已。谢谢你的时间=)

0 投票
1 回答
2307 浏览

c++ - 为什么 std::count(_if) 返回 iterator::difference_type 而不是 size_t?

可能重复:
为什么 C++ 标准算法“count”返回 ptrdiff_t 而不是 size_t?

标准 C++ 中有算法std::count/ std::count_if

效果:返回 [first,last) 范围内满足以下相应条件的迭代器 i 的数量:*i == value, pred(*i) != false。

difference_typeis iterator's difference_type,它可以是负数,但count只能返回值 >= 0。为什么difference_type而不是size_t例如?

0 投票
0 回答
1406 浏览

c++ - 为什么是“Unknwn.h”而不是“Unknown.h”?是不是印错了?

为什么微软的 COM 头文件命名为Unknwn.h, 而不是Unknown.h? 是印刷错误,还是这样命名有客观原因?

0 投票
2 回答
2521 浏览

c - 如何在 C 中为静态库设计接口

虽然我不是一个有经验的 C 程序员,但我必须在工作中使用这种语言来构建一个在 SunOS 和 Win32 上都可以编译的静态库。这个库只有几个源文件和它们对应的头文件(比如说:a.c、、b.c和)。该项目在两个平台上编译并生成库。a.hb.hmylib.a

我的问题是如何将实现的功能公开mylib.a给其他项目,因为当我同时添加两者时a.hb.h我会遇到一些宏重新定义错误。

编辑:我发现宏重新定义错误是因为编译命令中的宏定义(与我的头文件无关)并且它已解决:) 但我仍然想就组织我的源文件和头文件提出建议。

我的疑问是我是否修改a.hb.h在外部使用,或者我是否应该专门创建一个头文件来声明这个库的接口(比方说mylib.h)。我不想使原始头文件过于复杂,但我不想让不同的头文件保持同步......我想听听更有经验的 C 程序员关于他们的模式、每种方法的优点以及是否有其他方法选项。

先感谢您。

编辑:似乎我没有提供足够的信息;下面的模式试图显示我的文件是如何组织的:每个代码文件只包含它的头,每个头都有一个保护条件,每个头都包括一个公共头,这个公共头包括所有头。

0 投票
1 回答
169 浏览

javascript - 无依赖的 JavaScript onLoad

我正在开发一个 JavaScript 库,它需要让用户能够在加载时运行一些代码。当然,我熟悉jQuery之类的window.onload东西。$(function() {});但是我不想依赖另一个库,我希望这个特定的函数(当然还有其他的库)是跨浏览器的。

那么是否有一种可接受的方式来附加到onload函数而不覆盖另一个库的加载功能(或者如果它们在我的之后包含另一个库,则覆盖我的)?