问题标签 [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.
c++ - 为什么 C++03 文件流不接受字符串构造函数参数?
为什么下面的代码能编译进去C++11
而不能编译进去C++03
?(gcc
和cl
)
为什么C++03
流不接受std::string
作为构造函数参数?这个决定是基于某事还是偶然发生的?
javascript - 面向对象代码与 MVC 模式 - 初始化页面时要遵循哪个?
回复:1
如本SO Post所述,它们并不相互排斥
这是与此更一般的SO Post相关的特定问题
然而,控制器应该路由来自用户的所有呼叫。我通过初始化我的元素(设置 addEventListener)并让它们调用模型来做到这一点。
例如:(来自我的控制对象)
但是随着我的网站的增长,我的控制器变得越来越大。
我可以做的一件事是将初始化移动到它各自的模块中。例如,我的登录逻辑位于一个名为 ModelType 的对象中。初始化在对象 Control 中。
为了减小 Control 的大小,我可以将初始化移到 ModelSignIn 中。
或者我可以将我的控制器对象分解为多个对象 - ControlPage1、ControlPage2 等。
哪种方式最好或其他方式最好?
将初始化移动到相关对象的一个好处是,现在该对象是自包含的,您可以将其复制粘贴到其他应用程序中。缺点是这似乎打破了 MVC 模式。
c++ - 为什么标准类型不提供来自分配器不同来源的转换构造函数/赋值
例如,为什么不template< typename Elem, typename Traits, typename Alloc > basic_string { ... }
提供:
实现这样一个尊重两个分配器的转换构造函数似乎相当简单。当前的情况使得在分配器不同的类型之间进行接口变得非常麻烦。
.net - .NET IoC:预配置库组件以便于使用
前段时间我有一个类似的问题,但对整个 IoC/DI 主题以及我想要实现的目标的掌握要少得多,所以又来了....
我正在建立一个图书馆供我们公司内部使用。公共 API 中最常用的部分已经对 IoC 友好,但在较低级别的区域中,仍有相当多的新功能在进行,我想摆脱它们(尽管此时更多是出于正式原因而不是实际原因必要性)。
这本身很容易做到,但是当然每次使用库时,都必须重新连接所有组件。由于这看起来几乎总是一样的,我通常只是将这些默认注册包装在 Autofac 模块中并完成它。
(这里的问题 1:这个模块是放在主库程序集中还是应该是一个独立的包,即使 Autofac 可能是库中唯一使用的 IoC 容器?)
现在的问题是,我是公司目前唯一真正了解 IoC 目的或知道 IoC 容器做什么的开发人员,更不用说它是如何使用的了,告诉其他人他们是一个坏主意可以使用 Autofac 包,也可以使用穷人的 DI 手动构建十几个对象的图形。(我认识这些人——他们只会不理会它,自己建造他们需要的东西,因为无论如何我对我所有的小班都很疯狂。)
我想解决这个问题的是添加类似服务定位器的东西,从中提取常用类型的预配置对象(看起来与 Autofac 模块连接的那些相同),可能由轻量级 IoC 容器在内部连接.
我知道服务定位器是一种反模式以及它会产生哪些类型的问题,我永远不会将其用作(我的)对象组合方式,而是作为 IoC/SOLID 受损的“捷径”,是否可行? 我还有什么其他选择?在这种情况下,将 Autofac 模块包含在库中并让“服务定位器”充当它的前端是否有意义?
c# - 关于 OO 和库设计的几个问题
好的。我对 OO 和库设计的某些方面有一些疑问。
图书馆应该自给自足吗?例如,它可以使用外部依赖注入框架,还是应该以更轻量级的方式实现它自己?
Liskov 的替换原则如何适用于不知道方法或类行为的多态性?您只是期望它按应有的方式工作吗?
在源代码部分,将接口与实现分开放置在一个单独的文件夹(例如,
/interfaces
)中是一个坏习惯吗?where T : type
在接口上而不是在它们的实现中分隔泛型类型 () 也是一个坏习惯?(这个我不这么认为,只是为了确认一下)。当对象关系是“可以做”和“是”时,接口是否优于抽象类,并且不需要方法等的默认实现?
而已。谢谢你的时间=)
c++ - 为什么 std::count(_if) 返回 iterator::difference_type 而不是 size_t?
标准 C++ 中有算法std::count
/ std::count_if
。
效果:返回 [first,last) 范围内满足以下相应条件的迭代器 i 的数量:*i == value, pred(*i) != false。
difference_type
is iterator's difference_type
,它可以是负数,但count
只能返回值 >= 0。为什么difference_type
而不是size_t
例如?
c++ - 为什么是“Unknwn.h”而不是“Unknown.h”?是不是印错了?
为什么微软的 COM 头文件命名为Unknwn.h
, 而不是Unknown.h
? 是印刷错误,还是这样命名有客观原因?
c - 如何在 C 中为静态库设计接口
虽然我不是一个有经验的 C 程序员,但我必须在工作中使用这种语言来构建一个在 SunOS 和 Win32 上都可以编译的静态库。这个库只有几个源文件和它们对应的头文件(比如说:a.c
、、b.c
和)。该项目在两个平台上编译并生成库。a.h
b.h
mylib.a
我的问题是如何将实现的功能公开mylib.a
给其他项目,因为当我同时添加两者时a.h
,b.h
我会遇到一些宏重新定义错误。
编辑:我发现宏重新定义错误是因为编译命令中的宏定义(与我的头文件无关)并且它已解决:) 但我仍然想就组织我的源文件和头文件提出建议。
我的疑问是我是否修改a.h
并b.h
在外部使用,或者我是否应该专门创建一个头文件来声明这个库的接口(比方说mylib.h
)。我不想使原始头文件过于复杂,但我不想让不同的头文件保持同步......我想听听更有经验的 C 程序员关于他们的模式、每种方法的优点以及是否有其他方法选项。
先感谢您。
编辑:似乎我没有提供足够的信息;下面的模式试图显示我的文件是如何组织的:每个代码文件只包含它的头,每个头都有一个保护条件,每个头都包括一个公共头,这个公共头包括所有头。
javascript - 无依赖的 JavaScript onLoad
我正在开发一个 JavaScript 库,它需要让用户能够在加载时运行一些代码。当然,我熟悉jQuery之类的window.onload
东西。$(function() {});
但是我不想依赖另一个库,我希望这个特定的函数(当然还有其他的库)是跨浏览器的。
那么是否有一种可接受的方式来附加到onload
函数而不覆盖另一个库的加载功能(或者如果它们在我的之后包含另一个库,则覆盖我的)?