我应该为使用我的图书馆的人默认环境吗?

leo*_*ora 6 api environment default

我和朋友一直在讨论这个问题,我有一个库(它的python,但我没有把它作为一个标签,因为这个问题适用于任何语言),它有一些依赖关系.争论的焦点是在初始化时是否提供默认环境或强制代码的用户明确设置一个.

我的意见是强制用户明确,并避免混淆,并明确他们指向的内容.

我的朋友这对于默认环境更安全,更方便,如果他愿意,让用户覆盖.

想法?流行的库中是否有任何好的参考或示例/模式支持我们的任何一个参数?还有,讨论这个API设计点的任何流行的博客或文章?

And*_*per 6

我没有任何参考,但这是我作为所述库的潜在用户的想法.

我认为最好有一个默认配置,允许开发人员快速评估库.我不想要经历一堆配置只是为了看看库是否能满足我的需求.一旦我很高兴图书馆会做我需要做的事情,那么我很乐意按照我想要的方式配置它.

一个很好的例子是微软的ASP.Net MVC框架.当您创建一个新的MVC项目时,它会挂钩一个默认的身份验证和成员资格提供程序,这使开发人员可以非常快速地启动并运行正常运行的应用程序.如果默认的提供程序不符合相关应用程序的要求,也可以轻松配置要使用的不同提供程序.

作为一个稍微不同的例子,A​​tlassian Confluence是支持许多不同后端数据库的wiki软件.Atlassian可能选择没有默认的数据库配置,而是Confluence附带一个默认的简单的基于文件的数据库,以允许用户评估软件.对于生产安装,您可以连接到Oracle,SQL Server,mySQL或其他任何您喜欢的东西.

有些情况下,库的默认配置文件确实没有意义,但我认为这是一个特例,而不是一般规则.