1
我有以下代碼:包/類名是函數參數嗎?
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
...
builder = newBuilder(id, Email.CONTENT_ITEM_TYPE, bUpdate);
if (bPref) {
builder.withValue(Email.TYPE, Email.TYPE_CUSTOM);
builder.withValue(Email.LABEL, "PREF");
} else if (iType != -1) {
builder.withValue(Email.TYPE, iType);
}
builder.withValue(Email.DATA, value);
ops.add(builder.build());
builder = newBuilder(id, Phone.CONTENT_ITEM_TYPE, bUpdate);
if (bPref) {
builder.withValue(Phone.TYPE, Phone.TYPE_CUSTOM);
builder.withValue(Phone.LABEL, "PREF");
} else if (iType != -1) {
builder.withValue(Phone.TYPE, iType);
}
builder.withValue(Phone.DATA, value);
ops.add(builder.build());
builder = ...
...
這些模塊是非常相似的,我想編寫一個函數他們。
例如:
void build(xxx name) {
...
if (bPref) {
builder.withValue(name.TYPE, name.TYPE_CUSTOM);
builder.withValue(name.LABEL, "PREF");
} else if (iType != -1) {
builder.withValue(name.TYPE, iType);
}
builder.withValue(name.DATA, value);
ops.add(builder.build());
}
...
build(Email);
build(Phone);
build(...);
或者是有什麼辦法重構到這些功能呢?
什麼是電子郵件和電話? –
查看我的代碼的前兩行。他們是「android.provider.ContactsContract.CommonDataKinds.Email」和「android.provider.ContactsContract.CommonDataKinds.Phone」 – Deqing
我問他們是什麼類型 - 類,枚舉,打包自己?或者是什麼?您的問題目前太模糊,無法回答。它沒有包含關於設計的足夠信息來提出一些更好的選擇。 –