2012-05-19 55 views
1

因爲我不是母語爲英語的人,所以我最好確保不要創建對其他人來說聽起來尷尬的DSL。一個DI容器脫離了一個項目,我將它隔離爲一個獨立的項目。我看到其他使用類似bind(interface).to(class)等語法的DI/IOC容器。我會用下面的(僞代碼):對於我的DI容器,這個DSL是否有意義?

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

做這些有意義或者它聽起來像是從別人施工誰不掌握這些詞的一些更細的語義?

回答

2

我認爲你的方法與其他DI項目的例子一樣有意義。

幾點注意事項:

  1. bind/to短於given/thenUse寫。這本身並不是問題,但如果你可以用較短的名字實現相同的意思,那麼沒有太多的理由使用較長的(在給出的例子中它們都是相同的)

  2. 如果有建立起相同用途的名稱模式,那麼對於那些瞭解已實施的模式的用戶而言,生活將變得更加容易(例如,理解概念/含義),這將是一項好處。

    如果您將其他類似庫/工具的用戶「轉換」爲您的用戶,則使用smae命名約定可降低這些用戶的入口門檻。

    但是,如果你的暗示在概念上有所不同,那麼可以採用不同的名稱來強調差異並減少認知失調(在預期和發生的事情之間)。

    如果您認爲其中一種命名模式存在缺陷,導致認知不和諧(名稱所暗示的與實際的作用之間),用更好的命名方案替換它可能意味着更多的追隨者。

  3. 雖然given(class).inject(param).inMethod(method)英語讀好,它有對象的順序可能是違反直覺的人(而不是類/方法/參數,這是面嚮對象語言的自然秩序類/參數/方法:Class.method(param);) ;考慮:

相關問題