All'inizio, forse solo pochi codici di linea, ma ho visto troppi codici ripetuti e confusi che coinvolgono l'interferenza serializzazione / deserializzazione della logica principale. Quindi cerco di convincere i membri del team a ricoprire una funzione per operazioni come leggere / scrivere / aggiornare i dati, ad esempio:
void updateCopyTimes(int times)
{
player->getExtendJson["AcopyTimes"] = Json::Value(times);
player->updateExtendJson();
}
int getCopyTimes()
{
const int copyTimes = player->getExtendJson["AcopyTimes"].asInt();
return copyTimes;
}
Il punto che supporta la mia opinione è:
1) Con una funzione wrapper, possiamo avere una buona gerarchia di codice, possiamo concentrarci sulla logica, rendere la serializzazione / deserializzazione pulita, non diffusa ovunque.
2) Facile da estendere, possiamo facilmente modificare il programma per serializzare in un campo mysql (int / string / date ...), in un altro campo mysql json, facile aggiungere il codice di controllo, con la logica principale immune alla modifica.
Il discommender sostiene che:
1) Nel nostro programma, la possibilità di passare a un altro formato di serializzazione è piuttosto bassa, quasi impossibile. Non vale la pena farlo.
2) Avvolgere una tale funzione è troppo pensante, se lo facciamo, più codice dobbiamo scrivere. E se possiamo finire il lavoro, perché preoccuparsi?
3) E, soprattutto, diversi sviluppatori hanno difficoltà a seguire questa regola.
Quindi in quali condizioni (tipo di operazioni, quantità di codice ...), abbiamo bisogno di una tale funzione wrapper?