不知道大家如何认为的,一个编译好的组件,或者模块,仅仅是给其他程序调用使用的吗?这个不是这个问题的本质面,
我认为是这个API或者模块是给人设计的,一般而言,每一个组件或者模块都包含很多文档(也可能是XML注释的形式出现),真至于作者还是写了Demo,但是很多方面,人们并没有按照读者的角度来或者说没有按照API是人在使用的观点来组织这些说明性文件,想当然地会加入很多阅读者不可以理解的部分或者不需要暴露给读者的部分,或者这个API设计的很难理解和使用,毕竟最终需要人把这个模块整合到系统中的,也就是说其他模块会引用它,或者它引用其他模块。更加普遍的事情则是,没有描述清楚模块之间或者模块对外部程序的版本依赖,也没有提供测试这些依赖关系的tool,照成的结果是,如果一个模块依赖于一个版本>3.0 的XML paser,而读者并没有得到明确的指示,而安装了<3.0的版本,那么这个模块一部分功能受到影响,而糟糕的是,这个模块在系统加载了,引用它的所有模块潜在地受到了低版本XML parser的影响,系统的在一些功能上可以是“不完备”的状态!在模块很多,比如好几千个,即使上百个的话,没有一个明确的依赖关系(版本)的检查,
系统的稳定性和可信性将受到使用者的质疑!如果有一个这个版本检查机制,那么系统就不会加载可能存在潜在危险的模块,这样也就挽救了系统,也能给予用户提示(提示它们尽快更新这个依赖),还可以在系统加载的时候,检查版本时,发现被依赖的模块不存在或者版本不满足要求,检查工具可以自动到网络下载相应的版本!为应用的完备性提供了保障!
所以,在设计之初,就应该考虑到,我们在设计一个API或者模块或者框架的时候,应该考虑的是,在使用者无需知道更多细节的情况下就能部署或者使用它,并且提供完备的可以理解的为人类阅读的文档,也需要提供一个完备版本控制机制和检查工具!在明确这样的情况下,每一个模块甚至于可以由每个独立的小组或者分布式的小组完成,因为它们有明确的依赖关系、管理以及检查工具,这也为开发带来了便利。
以上实际上是谈论了两个问题:如何才是好的API,以及依赖版本的管理必要性。
对于,要设计好的API,我们可以使用经验型设计的方式,也就是说,如果一个使用者“使用”它最低的经验就能容易地使用我们的组件,并且可以轻易地满足各种情况,那么这个API至少就是好的,对于使用者而言,他们甚至于可以不去看文档就可以轻易使用这些组件,即使它们能够“乱序”的使用!这些对设计API的人提出更高的要求,因为必须考虑得很“周全”,而且做到“简单就好”,往往对设计人和开发者有更多的挑战!所以往往达不到理想的状态,但是至少核心的组件,应该能做到这样的要求,因为越是复用性强的组件,越是很容易被别的组织拿去用!那么可以将主要精力放在这些东西上!其他的部分,视情况而定!
对于好的依赖管理:最好的方式是让tool去检查,开发时让一个集中版本控制机制进行管理,另外可能大多数人会认为往往第一个版本的是容易的,但是事实并非如此,依赖除了版本依赖,还有一个兼容性的依赖关系:
没有开发人员会使用API总在变化的组件或者模块,因为需求的变化,我们往往要升级组件,这会带来问题,
第一:可能API变化,不兼容现有的客户程序了,那么使用它的组织会很恼火!因为他们不得不配合这个组件做对自己产品的变更,成本会比较高!之后就没有任何一个人使用这个组件了!
第二,增加了API,原来的API行为保持不变!这个还比较好,至少使用方的程序,至少现有的程序不受影响,那么对于这个策略,设计者应该是只增加API而不减少和在改进原有API时而不改变其行为!不过我认为这是好的策略中的第二,或者是中策!
第三,最好的办法是,在第一个版本的时候,就尽可能地依赖经验和普遍的原则设计和实现这个第一版本,这也许是可能的,而且这样会减少采取第二策略的可能性,让一个API在长久的使用周期中看起来就像一个百年建筑一样可信!人们就是喜欢使用这样的组件了!不过做到这一点非常困难,的确非常困难,需要大量的提炼和努力,不过也是可以达到的,不是吗!所以不要以为第一个版本就可以轻而易举的实现,我们应该为它做出最好的规划!
分享到:
相关推荐
白色简洁风格的学术交流会议源码下载.zip
内容概要:本文提出了利用交变电流场测量(ACFM)技术对水下结构中的缺陷进行可视化和智能识别的方法。通过对缺陷引起畸变磁场的分析,开发了梯度成像算法作为图像预处理方法,突显了缺陷的视觉形态。实验验证了梯度成像算法的有效性,并利用卷积神经网络(CNN)深度学习算法识别预处理后的灰度图样本。实验结果显示,电流扰动理论澄清了特征信号与缺陷形态之间的关系,单裂纹、不规则裂纹和腐蚀等缺陷可以被智能识别和准确评估。 适合人群:从事水下结构检测的研究人员和技术人员,以及对非破坏性检测技术感兴趣的工程领域人士。 使用场景及目标:① 海洋钻井平台、管道、海底油气处理设施等水下结构的缺陷检测;② 利用交变电流场测量技术和图像处理技术提高缺陷识别的准确性和智能化程度。 其他说明:本文不仅提出了交变电流场测量技术的新方法,还通过实验证明了这些方法的有效性,为实际应用提供了技术支持。
Neck Deep - In Bloom [mqms2].mgg2.flac
基于ESO的永磁同步电机无感FOC 1.采用线性扩张状态观测器(LESO)估计电机反电势,利用锁相环从反电势中提取位置和转速信息,从而实现无位置传感器控制; 2.提供算法对应的参考文献和仿真模型。 购买赠送PMSM控制相关电子资料。 仿真模型纯手工搭建,不是从网络上复制得到。 仿真模型仅供学习参考。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
三相逆变 单相 三相逆变器 SPWM ---stm32主控(输入、输出具体可根据需要设定),本逆变器可以二次开发。 本内容只包括 逆变程序,实现变频(0~100Hz)、变压调节,均有外接按键控制(使用C语言实现)。
NSConditionException如何解决.md
白色简洁风格的房产交易中心企业网站源码下载.zip
水果分拣机15可编辑全套技术资料100%好用.zip
内容概要:本文为《1+X移动互联网应用开发初级》课程的期中考试试卷解析。解析涵盖了Java开发入门基础知识,主要包括Android中SQLite数据库操作、ContentProvider使用、BroadcastReceiver、Intent传递数据、Activity生命周期、Service生命周期管理、文件操作模式、通知管理、JSON和XML解析、权限管理等内容。通过对各个题目的解析,帮助学生更好地理解和掌握移动互联网应用开发的基础知识和技术。 适合人群:正在学习《1+X移动互联网应用开发初级》课程的学生,尤其是网络21班的学生。 使用场景及目标:①帮助学生理解和掌握Android开发的基础知识点;②提高学生的实际操作能力,尤其是在期中考试后的查漏补缺。 阅读建议:建议学生在阅读解析时,结合教材和实践操作,加深对各知识点的理解。同时,可以通过模拟题进行练习,巩固学习成果。
自动送料切割机sw可编辑全套技术资料100%好用.zip
ClosedChannelException(解决方案).md
长焊缝打磨机step全套技术资料100%好用.zip
从给定的文件信息来看,核心知识点聚焦于内部审计业务的实施,特别是内部审计师如何遵循规范、标准和最佳实践来进行审计工作。以下是对关键知识点的深入解析: ### 内部审计业务实施的关键要素 #### 理解内部审计业务全过程 内部审计业务覆盖了从计划、实施、报告到后续跟踪的全过程,要求内部审计师具备全面的专业技能和严谨的工作态度。这一过程旨在确保组织的风险管理、控制和治理机制的有效性。 #### 核心业务类型 内部审计主要包括确认和咨询两大业务类型。确认服务侧重于评估组织的控制和风险管理程序,而咨询服务则更注重提供改进和优化现有流程的建议。 ### 实施内部审计的依据与标准 #### IIA职业实务框架 - **标准与道德规范**:包括内部审计实务标准和职业道德规范,前者指导内部审计活动的执行,后者强调审计师的公正、客观、保密和胜任能力。 - **实务公告**:提供非强制性的指导,涉及内部审计的特定操作流程和程序。 - **发展与实务帮助**:涵盖各种专业资源,如研究资料、书籍和培训课程,为审计人员提供深入的学习和支持。 #### 法律、法规和其他标准 除了IIA框架外,内部审计还应考虑适用
IncompatibleClassChangeError(解决方案).md
html渲染器,粘贴html代码到这个渲染器即可渲染出对应的效果
白色简洁风格的时尚宝马老爷车企业网站模板下载.zip
白色宽屏风格的贸易商务企业网站模板.zip
白色宽屏风格的旅游路线推荐整站网站源码下载.zip
白色简洁风格的社交博客网站后台系统源码下载.zip
实惠 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculater extends JFrame implements ActionListener。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。