设计更好的 API?

2024-03-01

  1. 设计 API 时应遵循哪些最佳实践和模式?
  2. 如何实现隐藏的最佳方式(C++/Java)?
  3. 设计本质上通用的 API?
  4. 有哪些参考书/链接可以为初学者提供简洁的示例指导吗?

我不确定我对你们所有的个人问题都有一个很好的答案,但我想我对第一个问题确实有一个很好的答案。

在它被写入之前尝试使用它。我的意思是,为代码编写单元测试,就好像它确实存在一样。在编写一行 API 之前,先编写一些将使用该 API 的代码。当您尝试使用它时,您将很快看到您想要的设计中哪些有效,哪些无效,并且您将很快对其进行更改以匹配其实际用途,因为您尚未编写任何实际代码.

如果您还没有将任何内容提交到代码中,那么更改某些内容永远不会有任何阻力,但是当您这样做时,通常会出现某种程度的不愿意这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计更好的 API? 的相关文章

  • 如何从日期中删除毫秒、秒、分钟和小时[重复]

    这个问题在这里已经有答案了 我遇到了一个问题 我想比较两个日期 然而 我只想比较年 月 日 这就是我能想到的 private Date trim Date date Calendar calendar Calendar getInstanc
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • Java - 从 XML 文件读取注释

    我必须从 XML 文件中提取注释 我找不到使用 JDOM 或其他东西来让它们使用的方法 目前我使用 Regex 和 FileReader 但我不认为这是正确的方法 您可以使用 JDOM 之类的东西从 XML 文件中获取注释吗 或者它仅限于元
  • Karaf / Maven - 无法解决:缺少需求 osgi.wiring.package

    我无法在 Karaf 版本 3 0 1 中启动捆绑包 该包是使用 Maven 构建的并导入gson http mvnrepository com artifact com google code gson gson 2 3 1 我按照要求将
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • Hadoop NoSuchMethodError apache.commons.cli

    我在用着hadoop 2 7 2我用 IntelliJ 做了一个 MapReduce 工作 在我的工作中 我正在使用apache commons cli 1 3 1我把库放在罐子里 当我在 Hadoop 集群上使用 MapReduceJob
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • 任何人都可以清楚地告诉如何在不使用像 这样的预定义函数的情况下找到带有小数值或小数值的指数吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 例如 2 0 5 1 414 所以想要 我是 c 的新手 所以请解释简单的逻辑 如果不是复杂的逻辑也足够了 在数学中 从整数取幂到实数
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • try-with-resources 中出现死代码警告,但翻译后的 try-catch-finally 中没有出现死代码警告

    以下代码使用try 有资源 https docs oracle com javase specs jls se7 html jls 14 html jls 14 20 3Java 8 中引入的构造 偶尔抛出 方法被声明为抛出一个偶尔的异常

随机推荐

  • 来自不同类的特定实例的 Swift 引用变量

    总的来说 我对 Swift 和 iOS 都很陌生 我正在使用 Swift 编写一个应用程序 这个应用程序有两个文件 ViewController swift and BTService swift ViewController swift有
  • 更改控制台中特定字母的颜色

    我正在使用几个形成一个特定的字符串strcat并将其显示到控制台中 该字符串包含以下字符 1 2 3 4 5 6 7 8 9 0 E我正在使用fprintf s 以此目的 例如 2E4137E65922 是代码的可能结果 无论如何我可以写信
  • 如何在 Rails 3 应用程序中分析请求

    如何在 Rails 3 应用程序中分析请求 这个答案 https stackoverflow com questions 2716418 how can i profile a request in rails似乎只适用于 2 我应该如何在
  • Java位移位的奇怪之处

    Java 有 2 个用于右移的位移运算符 gt gt shifts right and is dependant on the sign bit for the sign of the result gt gt gt shifts righ
  • Python + Beam + Flink

    我一直在尝试让 Apache Beam 可移植性框架与 Python 和 Apache Flink 一起使用 但我似乎找不到一套完整的指令来让环境正常工作 是否有任何参考资料包含使简单的 python 管道正常工作的先决条件和步骤的完整列表
  • PHP:如何彻底防止XSS攻击?

    如何才能完全防止 PHP 中的 xss 攻击 这是假设我不关心任何 HTML 标签或其他格式 仅运行 strip tags 并使其完全安全就足够了吗 Both htmlspecialchars and strip tags 被认为可以安全地
  • 使用 PyPDF2 将嵌套书签添加到 PDF

    的文档PyPDF2 https github com mstamy2 PyPDF2 指出可以向 PDF 文件添加嵌套书签 并且代码出现 阅读后 以支持此操作 向根树添加书签很容易 请参见下面的代码 但我无法弄清楚我需要传递什么作为paren
  • Visual Studio 2010 XAML 编辑器尴尬的 IntelliSense?

    在 Visual Studio C 文本编辑器中 当您需要属性时 只需键入prop然后点击两次选项卡即可获取属性的 片段 模板 类型和属性名称都会突出显示 当您想要在类型和属性之间切换时 请按 Tab 键 然后在完成后按 Enter 键 光
  • 如何在 Rust 中将字符串转换为字节向量?

    这可能是有史以来最愚蠢的 Rustlang 问题 但我保证我会尽力在文档或网络上的任何其他地方找到答案 我可以将字符串转换为字节向量 如下所示 let bar bytes some string 不幸的是我不能这样做 let foo som
  • 如何在同一解决方案中运行/调试多个 Web 应用程序项目?

    我有 2 个网络应用程序项目 一个是我的 asp net MVC 应用程序 另一个是与管理相关的功能 即 asp net Web 表单动态数据 我的 MVC 应用程序将是主站点 但我希望 Web 表单在 MVC 站点的 Admin 文件夹下
  • 如何调试 git 别名?

    调试git使用 shell 命令和引用使用别名可能很困难 我怎样才能看到什么git正在为给定的别名执行 In your gitconfig 添加以下内容 debug GIT TRACE 1 git 然后你就可以运行git debug
  • Xamarin.iOS:可执行文件已使用无效权利进行签名

    我最近添加了通知 FCM 到使用以下方法开发的 iOS 应用程序Xamarin iOS 当我尝试在已发布的设备 iPad 和 iPhone 上安装时 安装失败 我发现的所有类似问题都与本机开发有关 我尝试重新生成配置文件 删除并再次添加推送
  • BeautifulSoup find_all() 不返回任何数据

    我对 Python 很陌生 我最近的项目是从博彩网站抓取数据 我想要抓取的是网页上的赔率信息 这是我的代码 from urllib request import urlopen as uReq from bs4 import Beautif
  • 如何以编程方式列出 Rails 中的所有控制器

    我正在尝试构建一个 RESTful 应用程序来实际管理多种可配置对象 因此有大量的 资源 类型 因此有很多控制器 我仍处于 POC 阶段 所以如果我可以在第一个导航页面中显示所有控制器 那就太好了 那么有什么简单的方法 可编程 可以做到这一
  • 如何在 Silverlight 中更改 Textblock 的背景颜色?

    我想要一个黄色背景上有蓝色文本的文本块 我可以使用 前景 属性设置蓝色文本 但 背景 不起作用 我想那太简单了 那么最好的方法是什么 将其包裹在具有背景颜色的矩形或画布中 并且 我们是否应该了解有关 Silverlight 的任何内容 以了
  • 无法使用 ACI 卷。所需的驱动程序是“azure_file”

    尝试使用以下方式在 Azure 中部署此应用程序docker compose version 3 5 x environment default back environment Database settings POSTGRES DB
  • 在javascript中动态更新嵌套对象[重复]

    这个问题在这里已经有答案了 我有一个从 json 解码的对象 var data parentSeries 1 children BusinessRule ChrisTest2 ID ChrisTest2 3 childsub 3 jsonC
  • 如何在 Visual Studio 中将构建配置更改为发布?

    我正在尝试发布一个 Xamarin 项目 我怎样才能将构建配置更改为Release在 Visual Studio 2015 中 Update I have found the solution here it is 根据如何 设置调试和发布
  • 在 Composer 中设置“config.fxp-asset.installer-paths”选项

    当我运行composer update在继续更新之前我收到以下警告 The extra asset installer paths option is deprecated use the config fxp asset installe
  • 设计更好的 API?

    设计 API 时应遵循哪些最佳实践和模式 如何实现隐藏的最佳方式 C Java 设计本质上通用的 API 有哪些参考书 链接可以为初学者提供简洁的示例指导吗 我不确定我对你们所有的个人问题都有一个很好的答案 但我想我对第一个问题确实有一个很