- 设计API时应遵循哪些最佳实践和模式?
- 如何以最佳方式实现隐藏实现(C++ / Java)?
- 设计通用性强的API?
- 有哪些参考书籍/链接可以为初学者提供清晰的示例指导?
我不确定我对你的所有问题都有很好的答案,但是我认为我对第一个问题有一个好的答案。
在它被写出来之前就尝试使用它。我的意思是,像真正存在一样为代码编写单元测试。在你甚至还没有写一行API代码之前,先写一些将使用该API的代码。当你尝试使用它时,你会很快地看到你原先想象中的设计中哪些是有效的,哪些不是,并且由于你还没有写任何实际的代码,所以你会很快进行更改以匹配它的实际用途。
如果你还没有将任何内容提交到代码中, 那么更改某些内容就不会有任何阻力,但是一旦你提交了,通常就会有一定程度的犹豫。
问题四:
在我看来,Josh Bloch 在编写良好的 API 方面有最好的想法,并且他可以用非常易于理解的方式解释它们。上面的视频将为您解答 Q1-3。
一个写得好的API对于编写它的组织和使用它的所有人都是非常有价值的资产。鉴于良好的API设计的重要性,关于这个主题的文章却很少。在这个录制自Javapolis的演讲中,Java库设计师Joshua Bloch教授如何设计良好的API,并提供了许多好的和坏的API示例。
另外,您也可以阅读实用API设计:一位Java™框架架构师的自白这本书。我没有阅读过,所以不确定它的内容是否对您有用。
另一个需要检查的资源是:如何设计 (模块) API
void processData(Parameters reportParams);
使用这种超级通用的方法:
Apress - 实用API设计 - 一位Java架构师的自白 - 2008年
Pragmatic - 面向接口的设计 - 2006年
createPatientRecord();
createPatientAppointment();
createPatientCheckup();
2) 返回值:
3) 参数排序/顺序的一致性
recallPatientRecord(long patientId, long hospitalId);
recallPatientRecord(long patientId);
recallPatientRecord(long patientId, long hospitalId, int disciplineCode);
这个问题几乎不可能回答。它甚至可能不是适合在Stack Overflow上提问的问题(A:我如何解决特定问题?B:这是明确的答案)。
1.设计API时应遵循哪些最佳实践和模式
我们谈论的是哪种编程语言?我们谈论的是哪个问题域?因为对于一个编程语言/问题域而言有效的方法,对于另一个编程语言/问题域可能并不适用。
2.如何以最佳方式实现隐藏实现(C++/Java)
这个问题有一个答案,而且它太长了,无法在此处写出。事实上,它太长了,一个网站的参考资料是不够的。有许多网站和书籍,结合起来,将回答这个问题。哦,我只是在谈论C++。重复整个过程,针对Java。还有C#,Python等(等等)。
选择一种编程语言。然后我可以提供书籍和链接的参考资料。正如Fred Brooks所写,没有银弹。从一种编程语言到另一种编程语言,你不能采取单一的思维方式。在一种编程语言中成为一个好的API的特点,在另一种编程语言中可能是设计错误。相信我,我通过尝试在这些语言中应用C++、Delphi和Java习惯做法而学到了这个教训。它导致了糟糕的API和糟糕的代码。4.任何指导初学者的参考书/链接,带有简洁的示例