虽然我有一些开发经验,但我还没有设计 API 或更大规模的项目。
我的一般过程通常涉及以下内容:
- 提出一些建议的设计。
- 列出他们的优点和缺点。
- 给定一组场景(X 更改、添加的新功能等)——设计如何对其做出反应。
这是我自己的“风格”;我想知道在哪里可以阅读更多关于做这些事情的正式流程和方法的信息?(在线、书籍等)
虽然我有一些开发经验,但我还没有设计 API 或更大规模的项目。
我的一般过程通常涉及以下内容:
这是我自己的“风格”;我想知道在哪里可以阅读更多关于做这些事情的正式流程和方法的信息?(在线、书籍等)
框架设计指南是一本很好的书。此外,.NET Framework Standard Library Annotated Reference是另一本很棒的书。
以下是我遵循的一些原则:
Printer
和PrintQueue
,这Printer
将是最容易识别但PrintQueue
更能描述概念的地方。这导致...File
.NET 中的基类和派生的NtfsFile
. 大多数开发人员会自动尝试实例化 a File
,结果发现它是abstract
. 像这样的继承在实现中效果很好,但是......Stream
, StreamReader
, TextReader
,StringReader
和FileStream
. 有一个清晰的层次结构,但是在考虑一个场景时会让人感到困惑,例如读取文件。MyCompany.MyTechnology.dll
具有名称空间MyCompany.MyTechnology
和其他名称空间,例如MyCompany.MyTechnology.MyFeature
. 这不一定适用于框架/API;这里的程序集应该代表开发人员的逻辑分组,并考虑到性能(加载时间)、易于部署和易于版本控制。这是一种平衡行为;当只有 1 个程序集时,没有人喜欢引用超过 1 个程序集。如果程序集太大并且逻辑分组很差,没有人喜欢依赖他们不需要的东西(例如,即使您在 API 中使用的功能与 ADFS 无关,也必须额外依赖 ADFS )。我喜欢 The Clean Coder 一书,以及 C# 中的敏捷原则、模式和实践,最后是 Robert C. Martin 编写的 Clean Code。我喜欢他的写作方式,我喜欢他的编码风格,它给了我很多思考和应用到我自己作为程序员的职业生涯的机会。你可以在亚马逊上以相当便宜的价格买到所有这些书。Robert C. Martin 也有自己的网站来处理这类事情。http://www.objectmentor.com/omTeam/martin_r.html这是在“关于我们的团队部分”中以他为特色的网站。在那里四处寻找,看看你是否找不到他的其他网站,以及他编写的一个名为 Fitnesse 的程序。
尽管您的风格对于业余爱好者倾向于在较大规模上进行的正常大小的项目看起来不错,但可能涉及更多步骤。你想写什么在线服务?我目前正在为 Zoho 编写另一个,但我一直忘记将我的代码从工作中导入到我的程序中。
我刚刚为我们工作中的一个项目编写了一个 API,我确实有几点意见。
方法论原则上很好,但请考虑您的要求。您是否会有多个开发人员来推进和维护 API,或者您主要负责开发?如果是前者,那么架构的结构化方法和流程将在未来发生(可怕但不可避免的)变化时带来好处。
如果是后者,那么您将拥有更大的灵活性。每个 API 都在尝试实现不同的东西,无论是插件框架,还是服务的“公共”入口点——我建议您收集一些需求并确定遵循其中一种方法是否会使您受益。