[Conception] Refonte et design pour maintenance et extensibilité aisée
Bonjour!
Pour expliquer mon problème je trouve qu'un code sera très parlant :
Je met à disposition des utilisateurs l'enum suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| enum class PixelFormat
{
R8U, ///< R 8 bits 8 unsigned
RG8U, ///< RG 16 bits 88 unsigned
RGB8U, ///< RGB 24 bits 888 unsigned
RGBA8U, ///< RGBA 32 bits 8888 unsigned
};
unsigned int getBytesPerPixel(PixelFormat Format)
{
switch(Format)
{
case PixelFormat::R8U: return 1;
case PixelFormat::RG8U: return 2;
case PixelFormat::RGB8U: return 3;
case PixelFormat::RGBA8U: return 4;
}
} |
Seulement là j'ai besoin de rajouter soit de nouveaux format, soit de nouvelles propriétés (connaître le type du PixelFormat, savoir si on à affaire à un format compressé ou non, etc).
Et là je me rend compte que je vais vite avoir un code in-maintenable :aie:
Seulement je ne sais pas du tout par quoi remplacer. J'ai pensé à une classe ou l'utilisation de template mais rien ne me plaît vraiment..
Si vous avez une solution à me donner, une piste à suivre ou un design pattern je serais bien content!
Merci beaucoup à tous!