Un altro programmatore ha appena iniziato a lavorare nel nostro team e ha presentato una patch. Ciò che era necessario era avere qualcosa che confronta e verifica un paio di condizioni e imposta una proprietà in base al risultato. La patch, in sostanza, è una classe che implementa il requisito come qualcosa del tipo:
class Processor {
A a;
B b;
public function process(A a, B b) {
this.a = a;
this.b = b;
if (false == this.isVerified() && this.equalNames()) {
this.setVerified();
}
}
private function equalNames(): bool {
return this.a.name() == this.b.name();
}
private function isVerified(): bool {
return this.a.isVerified();
}
private function setVerified() {
this.a.setVerified(true);
}
}
Probabilmente il codice attuale aveva un po 'più di dettaglio, ma credo che lo pseudo codice sia abbastanza dettagliato. Fondamentalmente, cosa succede quando abbiamo rivisto il codice eravamo stupefatti. A peggiorare la situazione, non poteva dare la spiegazione al di là del fatto che il suo codice fosse "Clean Code" e che ci dicesse "Guarda com'è pulito!" e leggi il libro. In realtà, qualcuno ha sottolineato che per utilizzare il suo codice, è necessario prima istanziare quella classe, quindi chiamare process()
a cui la sua risposta era "Cosa c'è di sbagliato in questo?"
Poiché avevamo bisogno di portare a termine il lavoro, uno di noi ha proposto di sostituire quella classe con un metodo all'interno della classe AService
:
public function verifyA(A a, B b) {
if (!a.isVerified() && a.name() == b.name()) {
a.setVerified(true);
}
}
Questo è quello che finalmente è stato fuso. Ora, sento di voler sapere se c'è qualcosa di vero dietro l'involucro di una singola espressione logica in una funzione perché non voglio che si senta ignorato (nella sua revisione del codice ha sempre messo un commento sulle dichiarazioni if
di tutti da mettere loro in funzione, e finora nessuno obbliga). Anche per farlo o capiamo come spiegare qualunque sia la strada giusta.
Non ho letto il libro del codice pulito. Leggo il blog di Uncle Bob e capisco di inserire la logica di business nelle funzioni e. La mia domanda è più specifica di mettere una singola espressione logica in funzione e il riferimento al libro, se presente. La domanda secondaria è come gestire il dibattito su questo problema poiché è emerso alcune volte e influenza le dinamiche del team.