我们有20-30个独立模块/解决方案。每个项目大约有7-10个项目,有不同的类别、组件等。这些项目都是我们公司内部使用的。
我们的问题是,当我们对一个模块进行更改时,我们需要确保更新正在访问此代码的所有其他模块。这是很难知道,因为它是在不同的码基。
我们如何记录API的所有外部用途?或者以其他方式防止小的变化破坏其他模块?
发布于 2015-09-21 13:20:37
最简单的解决办法,IMO,是对每种产品进行相当数量的自动化测试。更新库时,将运行每个产品的测试套件。如果测试失败,那么您将知道哪些产品需要更新。
发布于 2015-09-21 13:25:20
我建议不要试图记录这个文件(至少是手动的),就好像你要求人们更新它一样,它需要很高的准确性才能正常工作。但你永远无法达到这样的精确度,因为添加这样的文档.不好玩,也没人会这么做。
一些更好的选择:
您还可以考虑缓慢地重构API,使其不那么脆弱,但如果您是个人,并且需要使用20+大型模块,那么这超出了您可以合理完成的任务范围。
发布于 2015-09-21 14:09:32
首先,具有外部用途的API不应更改。
正如@BryanOakley所提到的,在这种情况下,使用自动化单元测试是非常重要的,并且可以挽救生命。除此之外,还有一些建议可能(或不,根据情况)对你有帮助。
Function/Method Overriding
。像Python这样的语言向函数传递(无限数量的)参数和关键字参数: Java: public void (Char c) { System.out.println( c );} public void (char,int num) { System.out.println(c +“”+ num);} disp("A") disp("A",3) Python disp(c,*args):如果args: num = args0 print("%s %f“% (c,num))其他:print(%S”% c) disp("A") disp("A",3)public
、private
和protected
方法。您可以在public
函数中处理函数调用,并在private/protected
函数中执行任务。在python中,没有方法和函数的公共/私有定义,但是前面的下划线(_
)告诉我们方法是私有的,不应该在外部使用。外部API调用是通过向外部世界开放的方法传递的,所有任务都是以所谓的本地函数完成的: def format_input(a,b,*args,**kwargs):#这个函数对任何人都是开放的。所以使用*args和**kwargs获取#所有可能的可用参数。不要更改此函数#定义,函数参数a= _evaluate_input(a) b =_evaluate_input(b) #c不是所有API都使用的,而且可能没有在所有外部#API文档中记录。所以切赫如果它是作为关键字参数发送的话。如果是,那么如果"c“在kwargs中的话:C =_evaluate_input(kwargs.get("c")) _check_extra_arguments(args) _check_extra_keyward_arguments(kwargs) def _evaluate_input(value):#这是一个私有方法,因此不应该从#外部世界调用。您可以更改此方法和参数结构#,以满足您的需要,而不关心外部世界,因为任何外部API都不应直接使用此函数。..。def _check_extra_arguments(值):#我们将检查是否传递了任何额外的参数并相应地处理它们.正如我所说,外部应用程序(也)使用的API定义不应该经常更改。您可以寻找使外部函数更加灵活的方法,这样就可以在不破坏当前状态的情况下更改API的工作方式。
https://softwareengineering.stackexchange.com/questions/297483
复制相似问题