11-11-2012, 11:23 AM
Je n'aime pas les triggers au niveau de la base de données car elle implique une séparation de la logique métier (dans le mauvais sens du terme). Je préfère encapsuler mes interactions dans mes classes métiers.
Par exemple, dans Conquest on Rails j'ai des classes qui encapsulent mes interactions (voir les tests unitaires associés pour l'utilisation).
Je préfère avoir mes classes qui interagissent entre elles. Par exemple :
En plus, on peut même facilement effectuer certaines opérations en tâche de fond (via un système de queueing) si on veut réduire la charge du serveur Web. Et on garde notre logique applicative dans un seul langage, pour plus de cohérence et de facilité de maintenance.
Par exemple, dans Conquest on Rails j'ai des classes qui encapsulent mes interactions (voir les tests unitaires associés pour l'utilisation).
Je préfère avoir mes classes qui interagissent entre elles. Par exemple :
class Player
def upgrade_building(building)
Player.transaction do
if self.can_afford?(building.upgrade_costs)
self.debit_resources(building.upgrade_costs)
building.upgrade
else
raise NotEnoughResources
end
end
end
def can_afford?(costs)
# Contrôle si le joueur dispose des ressources.
end
def debit_resources(cost)
# Retranche les ressources des réserves du joueur.
end
end
class Building
def upgrade
# Augmente le niveau du bâtiment.
end
end
En plus, on peut même facilement effectuer certaines opérations en tâche de fond (via un système de queueing) si on veut réduire la charge du serveur Web. Et on garde notre logique applicative dans un seul langage, pour plus de cohérence et de facilité de maintenance.