- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当编写一个库或模块的公共(public) API 时,将在各种用例中被许多其他代码使用,平衡灵 active 和易用性的最佳方法是什么?我相信这两者经常发生冲突,你做的东西越灵活,就越难让它做好任何一件特定的事情。
例如,C++ STL 使用迭代器,恕我直言,迭代器级别非常低,使用起来很烦人,但作为交换,它们在允许相同的代码在各种 STL 容器上操作方面非常灵活。另一个例子是 Java 标准库的设计理念,它的小类非常具体,旨在实现最大的模块化和灵 active ,而 Python 标准库则偏爱更扁平的类层次结构,这使得处理常见用例更简单.这样的事情应该如何平衡?
最佳答案
如果您是可以强制他人使用您的类的标准机构的一员,那么您可以灵活而复杂地使用(例如 STL)。
对于其他所有人,除非有一些真正令人信服的理由,否则易用性应该始终是您的首选。否则,很少有人会使用您的代码/API。如果使用别人的代码的学习曲线很高,那么大多数人会选择只重新实现他们需要的部分。这通常更快,问题更容易解决。
在我看来,在评价代码质量时,“易于理解”仅次于“它可以正常工作”。
所以底线是,如果增加灵 active 是以牺牲易于学习和使用为代价的,那么在证明灵 active 是必要的之前不要增加灵 active 。
关于API 设计 : Flexibility Vs. 易用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/454649/
阿里团队开源的一个库。flexible.js,主要是实现在各种不同的移动端界面实现一稿搞定所有的设备兼容自适应问题。 实现方法: 通过JS来调整html的字体大小,而在页面中的制作稿则统一使用r
我正在尝试制作一个可能有一些长文本的小部件,我想用几行换行。 我正在尝试使用“ Flexible ”小部件来包装我的 Text但它仍然溢出,我不知道出了什么问题。 这是正在发生的事情: 这是我的 Co
match value with | :? list as l -> l //Is it possible to match any list of a type derived from SomeT
我是 Cassandra 的新手,可以在下面的维基百科中找到。 列族(自 CQL 3 起称为“表”)类似于 RDBMS(关系数据库管理系统)中的表。列族包含行和列。每行都由行键唯一标识。每行有多个列,
下面是我的 R 代码,它接受向量 a 并返回向量 b。向量 b 应该是具有特定格式的向量 a 的唯一标识符。请注意,a 是按所有相同的数字并排排列的。 a <- c(1, 1, 1, 2, 2, 2,
我有以下 df。 data = [ ['DWWWWD'], ['DWDW'], ['WDWWWWWWWWD'], ['DDW'], ['WWD'], ] df
我有一个包含评论的 mysql 表。评论可以有子评论,但只有下一级(有一个可选的“parent”属性,评论的父评论不能有自己的父评论)。我想对此类数据进行分页,如下所示: 取第一个,比如 10 个顶级
我想执行以下操作: if(x == true) { // do this on behalf of x // do this on behalf of x // do this
我正在为 OpenGL 3.1 设计渲染系统(目前仅限于 2D)。我真正想做的是考虑优雅的设计模式,这样我就不必担心一些难以维护和调试的乱七八糟的东西。 起初,我的想法是拥有一个模板化的基类,其函数接
我正在为许多不同的客户构建网络服务以连接到汽车零件数据库。该部件具有多种特性。不同的客户将需要不同的属性子集来“做他们的事”。 所有客户至少需要一个 ID、一个部件号和一个名称。有些可能需要价格,有些
我不确定标题是否清楚。我不太确定我要寻找的答案是什么。我一直在寻找和寻找,但似乎找不到答案。 这是我想做的: 我希望用户创建包含 x 组、x 次数和 x 类型的锻炼。 例如,我知道我可以做到; cre
当编写一个库或模块的公共(public) API 时,将在各种用例中被许多其他代码使用,平衡灵 active 和易用性的最佳方法是什么?我相信这两者经常发生冲突,你做的东西越灵活,就越难让它做好任何一
我这里可能有错误的“模式”,但我认为这是一个公平的话题。 我有一个ASP.Net MVC应用程序,它在其中调用WCF服务以获取将要呈现的ViewModel。 (之所以使用WCF服务,是因为其他小型MV
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 3 年前。 Improve this ques
我试图让下面的 div 变得灵活 div { min-width: 500px; max-width: 1000px; width:100%; height: 400px; margin-left:1
我需要什么:我需要值名称文本(左对齐)和值本身(右对齐)在 中元素。一定要灵活(输入宽高会变化) 我制定了涉及 的静态解决方案和一些 css,但它不灵活。我正在根据设备视口(viewport)调整
我的目标是创建一个 3 列布局: 第一列可以取任意宽度:它会通过 JS 改变 第二列尽可能多地占用空间 第三列固定宽度 #red { background-color:red; display
我需要为一个非常灵活的 XML 文件创建一个架构。它必须满足以下要求: 验证我们要求存在的一些元素,并知道它们的确切结构 验证一些可选的元素,我们知道的确切结构 允许任何其他元素 以任何顺序允许它们
在我的 flutter 应用程序中,我想要一张卡片和四个水平对齐的盒子,里面的宽度和高度都相等。代码如下; @override Widget build(BuildContext c
我正在尝试创建一个 Sticky Header,如果用户在左侧网格中选择更多文档(未图示),Sticker Header 可以在其中增长(绿色框)。 其他所有内容都应相应地向下推(在蓝色框中)。不确定
我是一名优秀的程序员,十分优秀!