En lisant un article cinglant sur les inconvénients de la POO en faveur d' un autre paradigme, je suis tombé sur un exemple avec lequel je ne trouve pas trop de défaut.
Je veux être ouvert aux arguments de l'auteur, et bien que je puisse théoriquement comprendre leurs points, un exemple en particulier, j'ai du mal à imaginer comment il serait mieux mis en œuvre dans, disons, un langage FP.
// Consider the case where “SimpleProductManager” is a child of
// “ProductManager”:
public class SimpleProductManager implements ProductManager {
private List products;
public List getProducts() {
return products;
}
public void increasePrice(int percentage) {
if (products != null) {
for (Product product : products) {
double newPrice = product.getPrice().doubleValue() *
(100 + percentage)/100;
product.setPrice(newPrice);
}
}
}
public void setProducts(List products) {
this.products = products;
}
}
// There are 3 behaviors here:
getProducts()
increasePrice()
setProducts()
// Is there any rational reason why these 3 behaviors should be linked to
// the fact that in my data hierarchy I want “SimpleProductManager” to be
// a child of “ProductManager”? I can not think of any. I do not want the
// behavior of my code linked together with my definition of my data-type
// hierarchy, and yet in OOP I have no choice: all methods must go inside
// of a class, and the class declaration is also where I declare my
// data-type hierarchy:
public class SimpleProductManager implements ProductManager
// This is a disaster.
Notez que je ne cherche pas de réfutation pour ou contre les arguments de l'auteur pour "Y a-t-il une raison rationnelle pour laquelle ces 3 comportements devraient être liés à la hiérarchie des données?".
Ce que je demande spécifiquement, c'est comment cet exemple serait-il modélisé / programmé dans un langage FP (code réel, pas théoriquement)?