簡體   English   中英

多個特定的公共方法調用私有方法或單個通用公共方法?

[英]Multiple specific public methods calling a private method or a single generic public method?

我不知道如何命名這個問題,但我盡力了。 我們在數據庫中有一個表,其中行表示映射,每行都有一個字符串列,指定 object 對應的內容。 例如,某些行在該列中有“書籍”,其他行有“CD”,其他行有“繪畫”等。

我們要檢索與特定類型的 object 關聯的所有行,例如與“書籍”關聯的所有行。 我們有一個為該表服務的 class。

我們有兩種方法來編寫 class。 哪個選項更好? (也許有些選項 3?沒有首選方式?沒關系?真的很好奇。)

選項1

public TableClass {
    public List<Field> getBooksFields() {
         return getFields('Books');
    } 
    
    public List<Field> getCDsFields() {
         return getFields('CDs');
    } 
    
    ...etc...
    
    private List<Field> getFields(String name_of_field) {
         return tableRepository.getRowsWithType(name_of_field);
    } 
}

然后在代碼中我們想要獲取與書籍關聯的字段的任何地方,我們都可以這樣做:

List<Field> bookFields = tableClass.getBooksFields();

選項 2

public TableClass {
    public List<Field> getFieldsWithType(String name_of_field) {
         return tableRepository.getRowsWithType(name_of_field);
    } 
    
    ...
}

然后在Constants static class 中硬編碼,該名稱與數據庫中的每個字段相關聯。 所以我們會這樣做:

import Constants.BOOKS_FIELD_NAME;

...

List<Field> bookFields = tableClass.getFields(BOOKS_FIELD_NAME);

從編碼的角度來看,哪個選項更好?

我對這個問題的簡短回答是——無論你最喜歡什么。 因為您再調用一個 function,即使您不會(總是)對性能產生很大影響,也會產生一些影響。

大多數情況下,編譯器只會內聯您的第二個 function 但如果這沒有發生,那么您將失去一些性能。 但是我需要說這並沒有那么多,如果你的代碼寫得很好,你甚至不會注意到它。

您想要編寫的代碼對於以后使用它的每個人來說都是可以理解和干凈的,這里還有另一個問題。 您的數據庫查詢是否有可能需要更改“書籍”等關鍵字? 在一個地方更改它(第一個選項)總是比通過代碼並多次更改它更容易(搜索和替換 - 是的,但仍然需要更多時間)。

這真的取決於你,兩個代碼都很好。 第二個更干凈,更容易編輯,但第一個更優化(不是那么多)。

有關從函數調用函數的更多信息,您可以在此答案中閱讀: https://stackoverflow.com/a/27875180/14759470

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM