Ты участвуешь в обсуждении кода на code review в средней e-commerce компании. Младший разработчик отправил PR, в котором рефакторит слой моделирования данных с простых factory functions на ES6 классы. Старший инженер команды отметил это для обсуждения и хочет услышать твою точку зрения перед одобрением:
class ProductRepository {
constructor(db) {
this.db = db;
}
async findById(id) {
return this.db.query(`SELECT * FROM products WHERE id = ?`, [id]);
}
}
class CachedProductRepository extends ProductRepository {
constructor(db, cache) {
super(db);
this.cache = cache;
}
async findById(id) {
const cached = await this.cache.get(id);
if (cached) return cached;
const result = await super.findById(id);
await this.cache.set(id, result);
return result;
}
}