Skip to content

Instantly share code, notes, and snippets.

@febuiles
Created January 12, 2012 22:45
Show Gist options
  • Save febuiles/1603627 to your computer and use it in GitHub Desktop.
Save febuiles/1603627 to your computer and use it in GitHub Desktop.

Mover font includes al .h

Algunos comentario son inutiles, cosas como esto no tienen sentido:

//Initialization of the static vars.

DeberíasMover definición de constantes al .h

No tiene sentido tener bloques de comentarios cerrados con cosas así en todas partes:

/**************************************/

El método Init debería recibir una estructura u objeto para no tener que pasar varios parametros según diferentes circunstancias.

En C++ usualmente no se utiliza tener nombre métodos capitalizados. En vez de SetFontColor se usa set_font_color. De ahora en adelante voy a seguir usando tu estilo, aunque no crea en él.

En SetFontColor estás usando polimorfismo para algo que realmente debería ser:

void PS3Printer::SetColor(int fgColor, int bgColor)
void PS3Printer::SetForegroundColor(int fgColor)
void PS3Printer::SetBackgroundColor(int bgColor)

Usar variables _foo en los parametros de un método no tiene sentido sino tenés una propiedad con el mismo nombre en ese mismo scope. Por ejemplo:

void PS3Printer::SetFontColor(int _fgColor) {
	sconsole.__bgColor = FONT_COLOR_NONE;
	sconsole.__fgColor = _fgColor;
}

Podría ser reemplazado por:

void PS3Printer::SetFontColor(int fgColor) {
	sconsole.__bgColor = FONT_COLOR_NONE;
	sconsole.__fgColor = fgColor;
}

Que es más legible. Se usa _fgColor cuando existe otra variable llamada fgColor en ese mismo scope (o en el global), por ejemplo:

void PS3Printer::SetFontColor(int _fgColor) {
    fgColor = _fgcolor;    // aqui sí tiene sentido usar eso
}

En esta definición de método:

uint32_t PS3Printer::CalculateAlpha(const uint32_t &src, const uint32_t &bg) {//bg -> Background; src -> Color we want to calculate-alpha

Estás usando comentarios para algo que un código más legible podría resolver:

uint32_t PS3Printer::CalculateAlphaForColor(const uint32_t &color, const uint32_t &bg_color) {

Lo repetís en la línea siguiente:

uint32_t a = src >> 24;    // alpha

Podrías hacer simplemente:

uint32_t alpha = src >> 24;

El nombre de las variables no te cuestan más si son más largas, no tengás miedo de usar nombres descriptivos.

Deberías usar {} en todos los condicionales:

if (0 == a) 
	return bg;
if(0xff == a)
	return src;

La razón es simple: si el día de mañana tenés que hacer otra cosa antes del return te vas a equivocar si se te olvida que no tiene {}.

Si usaras orientación a objetos en vez de números a la fuerza podrías limpiar el código:

if (0 == a) 
	return bg;
if(0xff == a)
	return src;

Orientado a objetos (suponiendo que alpha es un objeto):

if (alpha.isEmpty()) 
	return bg;
else if(alpha.isFullyTransparent())
	return src;

En SetFontValue podrías recibir un objeto o struct en vez de 6 parametros. Teniendo un objeto podes tener un metodo que se llame toSConsole o algo así que te permita escribir el método como:

void PS3Printer::SetFontValues(FontValue values) {
    values.toSConsole(sconsole);
}

Lo mismo aplica en SetFontValuesMonospaced.

Debes usar nombres más descriptivos en los métodos:

void PS3Printer::SetDefaultValues();

Podría ser facilmente:

void PS3Printer::SetDefaultFont();

El método Print está haciendo demasiadas cosas. Podés ignorar el resto de este documento pero tenés que cambiar ese método. Lo que hay después del for simplemente es imposible de leer. Tenés que partir eso en varios métodos.

Seguís con los comentarios inutiles:

SetFontColor(FONT_COLOR_RED, FONT_COLOR_YELLOW);//red background, yellow letters

Leyendo el código podría ver los colores, no necesito el comentario para recordarmelo. Además, considerá usar COLOR_RED o RED en vez de FONT_COLOR_RED ya que ese color sirve para cosas adicionales a las fuentes.

Deberías tener una variable en la clase con el valor de buffer para que no lo tengás que pasar en todos los diferentes métodos print.

El espacio en blanco después de PrintWarning simplemente no tiene disculpa.

El método SetFont es ridículo, usa objetos y no te pongas a hacer case por propiedades.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment