[英]Looking for ways to deduce selector classifications
我正在研究一個SelectorClassifierAssistant
對象,該對象建議對方法進行可能的分類。
到目前為止,我已經實施了以下策略:
ifTrue: [^#accessing]
) 並且,如果以上所有都失敗(即建議為空):
我可以使用其他已知的啟發式方法嗎?
- -編輯 - -
選擇器只從同一個類發送 - > #private(@Carlos E. Ferro)
已知選擇器(#=#hash等 - > #comparing等)
空類別(如果類別為空,則可能是用戶剛剛添加它以對下一個選擇器進行分類。)
當然。 以下是一些其他眾所周知的模式:
實例創建
newStringBrick
^ GLMStringBrick new
默認值
defaultDotsText
^ '...'
懶惰的初始化
items
^items ifNil: [ items := OrderedCollection new ]
當然,還有許多框架/應用程序特定的模式。 Sunit單元測試,海邊應用,magritte描述都有特定的模式。 一個非常簡單的是magritte-description
descriptionArticle
<magritteDescription>
^QCToOneOptionRelationDescription new
accessor: #article;
label: 'Article';
options: self possibleArticles;
priority: 40;
classes: QCArticle allSubclasses;
yourself.
[編輯]然后啟發式:另一個可能很好的建議是我最后使用的,或者如果你看到一個短的重復周期適合的那個。
是否可以直接為擴展方法找到一個好的類別?
我認為在你的最后一個選項中,不是查看方法中發送的消息類別進行分類,最好是查找此消息的發件人類別。
這是我經常使用的啟發式方法。
我發現的原因是,從這個調用的方法最有可能是一般服務,但是這個方法的發送者將其視為一種服務,並定義了使用此消息的“感興趣區域”。
----編輯----
另一個相關的啟發式,非常簡單:如果所有發件人都是本地的(這個類或子類),那么“私有”是一個很好的候選者來對它進行分類。 沒有發送者的方法通常是私人服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.