- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
Double extractShare(Product product, ShareExtractor extractor) {
if (product != null) {
Equity equity = product.getEquity();
if (equity != null) {
Double shareMetric = extractor.extract(equity);
if (shareMetric != null) {
return shareMetric;
}
}
}
return 0.0;
}
private interface ShareExtractor {
ShareMetricExtractor PUBLIC_SHARE_OUTST_EXTRACTOR = new ShareExtractor() {
@Override
public Double extract(Equity equity) {
return equity.getPublicShareOutst();
}
};
ShareMetricExtractor SHARE_OUTST_EXTRACTOR = new ShareExtractor() {
@Override
public Double extract(Equity equity) {
return equity.getShareOutst();
}
};
Double extract(Equity equity);
Архитектор головного мозга - это диагноз. Фанатзия нашего системного архитектора толи зашкалила, то ли дала сбой. Сей фердопердозный код был заменен следующим же коммитом, но свн помнит все! )
Конечно, мне часто не хватает автоматического преобразования методов вида Thing MyClass.getThing() в Function<MyClass, Thing>, но лишь для преобразований последовательностей, а уж точно не в таком контексте, в котором оно здесь применено.
Double[] extractShare(Product product){
....
return {equity.getPublicShareOutst(), equity.getShareOutst()};
}
ненавижу такое именование.
ShareExtractor.SHARE_OUTST_EXTRACTOR - выгядит как масло масляное. ну на кой хер два раза писать extractor и share??? это как PhoneType.MOBILE_PHONE или PhoneType.MOBILE_TYPE.