Plusieurs commentaires :
- Tu utilises des attributs d'objet sans les déclarer, ces $this->Variable n'ont pas de sens.
- IGStaff++ : Tu définis des attributs parfois dans une méthode, sans jamais les utiliser ailleurs. Pourquoi alors passer par un attribut ?
- Lignes trop longues => factorisation ! Dans ce cas, la factorisation t'aurait mené peut-être à la solution de Ren, mais qui n'apporte rien d'autre que de réduire la ligne. Je te propose de rendre ton code évolutif, de manière à ce que tu puisses ajouter extrèmement simplement de nouvelles armes.
- Les méthodes "Afficher*" ne devraient pas exister, pour plusieurs raisons :
-- Une méthode d'une classe "utilitaire" ne devrait jamais rien afficher directement
-- Le seul intéret de ces méthodes semblent d'économiser des octets, sinon quel intérêt ? Or "Afficher" (8) prend plus de place que "echo " (5), donc vraiment aucun intérêt
Tu ne t'en es pas rendu compte car tu n'as probablement pas assez réfléchi à ton code, mais tu manipules des objets dans cette classe, des objets de type "arme de siège", définis par :
- un nom
- une force
- une quantité
- Tu utilises des attributs d'objet sans les déclarer, ces $this->Variable n'ont pas de sens.
- IGStaff++ : Tu définis des attributs parfois dans une méthode, sans jamais les utiliser ailleurs. Pourquoi alors passer par un attribut ?
- Lignes trop longues => factorisation ! Dans ce cas, la factorisation t'aurait mené peut-être à la solution de Ren, mais qui n'apporte rien d'autre que de réduire la ligne. Je te propose de rendre ton code évolutif, de manière à ce que tu puisses ajouter extrèmement simplement de nouvelles armes.
- Les méthodes "Afficher*" ne devraient pas exister, pour plusieurs raisons :
-- Une méthode d'une classe "utilitaire" ne devrait jamais rien afficher directement
-- Le seul intéret de ces méthodes semblent d'économiser des octets, sinon quel intérêt ? Or "Afficher" (8) prend plus de place que "echo " (5), donc vraiment aucun intérêt
Tu ne t'en es pas rendu compte car tu n'as probablement pas assez réfléchi à ton code, mais tu manipules des objets dans cette classe, des objets de type "arme de siège", définis par :
- un nom
- une force
- une quantité
Code PHP :
<?php
class ArmeSiege {
public $nom;
public $quantite;
public $force;
public function __construct($nom, $quantite, $force) {
$this->nom = $nom;
$this->quantite = $quantite;
$this->force = $force;
}
}
Ta classe ne manipulera donc plus une simple liste d'arguments posés "en dur", mais plutôt une liste d'armes de sièges "concrète" :
Code PHP :
<?php
class AttaqueArmesSiege {
public $armes = array();
public function __construct($armes) {
$this->armes = $armes;
}
public function AttaqueBruteArmesSiege() {
$result = 0;
foreach ($this->armes as $arme) {
$result += $arme->force * $arme->quantite;
}
return $result;
}
public function PourcentagesArmesSiege() {
return mt_rand(80,100) / 100;
}
public function AttaqueNetArmesSiege() {
return $this->AttaqueBruteArmesSiege() * $this->PourcentagesArmesSiege();
}
}