Api 我的DI容器的DSL有意义吗?

Api 我的DI容器的DSL有意义吗?,api,inversion-of-control,usability,dsl,fluent-interface,Api,Inversion Of Control,Usability,Dsl,Fluent Interface,因为我不是以英语为母语的人,所以我最好确保不要创建一个会让别人觉得尴尬的DSL。一个DI容器出现在一个项目中,我将它作为一个单独的项目进行隔离。我看到其他DI/IOC容器使用类似于bind(interface).to(class)的语法。我将使用以下(伪代码): 这些词有意义吗?还是听起来像是某个不懂这些词的更精细语义的人的构造?我认为你的方法和其他DI项目的例子一样有意义 几点注意: bind/to比给定的/要短,然后使用。这本身不是一个问题,但是如果你能用较短的名字来表达相同的意思,那么就没

因为我不是以英语为母语的人,所以我最好确保不要创建一个会让别人觉得尴尬的DSL。一个DI容器出现在一个项目中,我将它作为一个单独的项目进行隔离。我看到其他DI/IOC容器使用类似于
bind(interface).to(class)
的语法。我将使用以下(伪代码):


这些词有意义吗?还是听起来像是某个不懂这些词的更精细语义的人的构造?

我认为你的方法和其他DI项目的例子一样有意义

几点注意:

  • bind
    /
    to
    给定的
    /
    要短,然后使用
    。这本身不是一个问题,但是如果你能用较短的名字来表达相同的意思,那么就没有太多理由使用较长的名字(在给定的例子中,他们读的都是相同的)

  • 如果有一个用于相同用途的已建立的名称模式,那么对于知道已建立模式的用户来说(例如,掌握概念/含义),您的实现将更加容易,这将是一个好处

    如果您正在将其他类似库/工具的用户“转换”为您的用户,则使用smae命名约定可以降低这些用户的进入壁垒

    然而,如果你的实现在某些方面在概念上是不同的,那么最好使用不同的名称来强调差异并减少认知不一致(在预期和正在发生的事情之间)

    如果你认为(其中一种)其他命名模式有缺陷,会造成认知上的不一致(在名称的含义和实际用途之间),用更好的命名方案取代它可能意味着更多的追随者

  • 虽然
    given(class).inject(param).inMethod(method)
    的英文读起来不错,但它的对象顺序可能会违反某些人的直觉(class/param/method而不是class/method/param,后者是面向对象语言的自然顺序:
    class.method(param);
    );考虑:
    给定(类)和(方法)。使用参数(param)

  • given(interface).thenUse(class)
    given(class).constructWith(id=5)
    given(class).inject(observer).inMethod(addObserver)