У меня есть дилемма о том, где заполнить данные.Где заполнять данные? Внутренний или внешний метод?
Ниже приведены два вида методов, чтобы вычислить общую стоимость цитаты:
// example in javascript
function computePrice(quotation) {
var totalPrice = 0.00;
var items = quotation.getItems();
for (var i = 0; i < items.length; i++) {
totalPrice += items[i].getPrice();
}
return totalPrice;
}
QuotationDao.populateItems(quotation);
computePrice(quotation);
Другой способ написания является:
function computePrice(quotation) {
var totalPrice = 0.00;
// Populate items in the quotation from database
QuotationDao.populateItems(quotation);
var items = quotation.getItems();
for (var i = 0; i < items.length; i++) {
totalPrice += items[i].getPrice();
}
return totalPrice;
}
computePrice(quotation);
Я попросил моих коллег и получили разные входы.
Метод № 1 правильный, поскольку код не должен извлекать данные в функции, если только эта функция не создана исключительно для целей извлечения.
Метод №1 является правильным, поскольку он позволяет проводить единичные испытания.
Метод №2 является правильным, потому что перед вызовом метода не требуется внешняя зависимость, метод имеет высокую степень сцепления.
Все метод является неполным, QuotationDao.populateItems (цитата) должен быть в отдельном методе, как QuotationDao.getComputePriceData (котировки) с результатом перешедшим в computePrice как computePrice (computePriceData);
У вас есть какие-либо советы относительно того, какой маршрут я должен предпринять?
Благодаря палочки. но erm .. где бы вы заполнили позиции котировки? Внутри getTotalPrice или fetchQuotation или другая строка между такими: Котировка q = DAO.fetchQutation (someCondition); DAO.populateQuotationItems (q); totalPrice = q.getTotalPrice(); – bryan
Что делает populateQuotation? –
Хмм, 1 котировка обычно имеет N позиций, таких как продукт, количество, цены. populateQuotationItems будет заполнять элементы конкретной цитаты. Только после того, как население может вычислитьЦена работы. Это связано с тем, что без населения котировка будет содержать 0 элементов, поскольку они не были получены из базы данных. – bryan