guidobotta / Taller1-TP2

0 stars 0 forks source link

Esta función te quedó un poco larga. #1

Open fedemgp opened 4 years ago

fedemgp commented 4 years ago

https://github.com/guidobotta/tp2-taller/blob/4414f162834624753ace3a1a9301c64948e9a5fd/real_worker.cpp#L14-L34

Podrías haber ganado un poco de encapsulamiento si hubieras hecho una especialización de realWorker (btw, me pareció interesante tu encapsulamiento del hilo en dos clases, worker y real_worker, para no hacer un delete explicito, y tenerlo mas RAII). Es mas, ni siquiera necesitabas una especialización, podrías haber pasado en el constructor de realWorker una lista de las materias primas que necesita y los puntos de beneficios que este otorga, para evitar este switch con código duplicado.

fedemgp commented 4 years ago

En el WorkerManager::add_worker podrías haber hecho lo siguiente:

std::vector<int> recipe(4,0);
int points(0);

if (type == "Cocinero") { // mejor tenerlo en una macro
   recipe[Resource::wheat] = 2; // estos son clases enumerativas, investigar
   recipe[Resource::coal]  = 1;
   points = 5
} 
... 
// etc
...
for (int i = 0; i < amount; i++) {
   this->workerList.push_back(Worker(this->inventory, this->score, 
                                          recipe, points));
}