En el trabajo me encargaron que diseñara e implementara una clase para enviar correos para visual studio 2010 en el lenguaje de C#, veamos como la fui armando, primero que nada, haremos una clase llamada
ManejadorDeCorreoElectronico
una vez tengamos nuestra clase, vamos agregar la siguiente referencia:
using System.Net;
using System.Net.Mail;
Esto es para poder utilizar las clases siguientes:
MailMessage, SmtpClient y Attachment
Estas clases cuentan con los metodos y propiedades necesarias para poder enviar correos electronicos, la clase MailMessage trae propiedades como Subject, Body, Priority entre otras mas.
La clase SmtpClient cuenta con propiedades basicas propias del ambito de un cliente Smtp, como lo es el puerto y el host.
Creando clase ManejadorDeCorreoElectronico:
using System;
using System.Net.Mail;
using System.Net;
namespace Utilerias
{
public class ManejadorDeCorreoElectronico
{
private MailMessage CorreoElectronico;
private SmtpClient Smtp;
// nota: el constructor por defecto utilizara el cliente Smtp de gmail
public ManejadorDeCorreoElectronico()
{
CorreoElectronico = new MailMessage();
Smtp = new SmtpClient("smtp.gmail.com", 587);
Smtp.EnableSsl = true;
CorreoElectronico.Priority = MailPriority.Normal;
CorreoElectronico.IsBodyHtml = false;
}
public ManejadorDeCorreoElectronico(string host, int port)
{
CorreoElectronico = new MailMessage();
Smtp = new SmtpClient(host, port);
Smtp.EnableSsl = true;
CorreoElectronico.Priority = MailPriority.Normal;
CorreoElectronico.IsBodyHtml = false;
}
public void EnviarCorreo(string correoFuente, string passowrd,string nombreYapellidos, string Correodestinatario, string subject, string body)
{
try
{
Smtp.Credentials = new NetworkCredential(correoFuente, passowrd);
CorreoElectronico.Subject = subject;
CorreoElectronico.Body = body;
CorreoElectronico.From = new MailAddress(correoFuente, nombreYapellidos);
CorreoElectronico.To.Add(new MailAddress(Correodestinatario));
Smtp.Send(CorreoElectronico);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public void EnviarCorreo(string correoFuente, string passowrd, string nombreYapellidos, string Correodestinatario, string subject, string body, string fileName)
{
try
{
Smtp.Credentials = new NetworkCredential(correoFuente, passowrd);
CorreoElectronico.Subject = subject;
CorreoElectronico.Body = body;
CorreoElectronico.From = new MailAddress(correoFuente, nombreYapellidos);
CorreoElectronico.To.Add(new MailAddress(Correodestinatario));
CorreoElectronico.Attachments.Add(new Attachment(fileName));
Smtp.Send(CorreoElectronico);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}
El método EnviarCorreo esta sobrecargado, uno para enviar un simple correo y otro para agregar un attachment.
Tambien el constructor esta sobrecargado, ya que el constructor pordefecto, esta configurado con el host y el puerto de gmail.
y el otro constructor, recibe el host y el puerto de un determinado servidor de correos.
Ahora bien, veamos como implementamos nuestra clase.
1.- crear una aplicacion windows form, y agregar un boton y le damos doble click:
private void button1_Click(object sender, EventArgs e)
{
ManejadorDeCorreoElectronico correo = new ManejadorDeCorreoElectronico();
try
{
correo.EnviarCorreo("user@gmail.com", "password", "Fernando Hoyos", "userDestino@dominio.com", "correo prueba", "este es un correo de prueba enviado por c#, no te malviajes");
MessageBox.Show("ya se armo el correo");
}
catch (Exception ex)
{
MessageBox.Show("no se armo ni maiz" + ex.Message);
}
}
Enjoy =)
El día de hoy, unos compañeros de trabajo me pasaron este software, sin duda, lo que me hacia falta, este software te permite hacer un seguimiento de tus actividades diarias y clasificar cada actividad de acuerdo a lo que estés haciendo.
otro compañero comento que era algo obsesivo estar midiendo cada actividad incluso el ir al baño, tal ves lo sea, pero nos da una pauta de cuanto tiempo estamos invirtiendo en un proyecto, incluyendo las necesidades fisiológicas como ir al baño.
Enseguida viene la imagen de la pantalla principal de hamster time tracking.
Otra de sus funcionalidades principales es que tiene estadísticas, primero tendrá que pasar una semana para hacer una comparación del tiempo que invertiste en tu día de trabajo.
Cuenta con un overview que te permite ver el tiempo invertido en un dia de trabajo, cosa que en lo personal me parece interesante.
Cabe mencionar que es open source, y esta disponible para windows, originalmente se creo para correr bajo gnome, pero hay una versión para windows.
Este software lo pueden descargar directamente de del siguiente link: http://howle.org/hamster-setup.exe
Tambien pueden visitar el sitio donde se sigue paso a paso el desarrollo de dicho programa para la versión de windows: https://bugzilla.gnome.org/show_bug.cgi?id=541316#c6
otro compañero comento que era algo obsesivo estar midiendo cada actividad incluso el ir al baño, tal ves lo sea, pero nos da una pauta de cuanto tiempo estamos invirtiendo en un proyecto, incluyendo las necesidades fisiológicas como ir al baño.
Enseguida viene la imagen de la pantalla principal de hamster time tracking.
Otra de sus funcionalidades principales es que tiene estadísticas, primero tendrá que pasar una semana para hacer una comparación del tiempo que invertiste en tu día de trabajo.
Cuenta con un overview que te permite ver el tiempo invertido en un dia de trabajo, cosa que en lo personal me parece interesante.
Cabe mencionar que es open source, y esta disponible para windows, originalmente se creo para correr bajo gnome, pero hay una versión para windows.
Este software lo pueden descargar directamente de del siguiente link: http://howle.org/hamster-setup.exe
Tambien pueden visitar el sitio donde se sigue paso a paso el desarrollo de dicho programa para la versión de windows: https://bugzilla.gnome.org/show_bug.cgi?id=541316#c6
Publicado por
fernandelmore
en
8:39
Que tal, se me presento la oportunidad con firebird y .net, y la primer duda es como armar un connection string para firebird en .net, navegando por la web me tope con una pagina http://www.connectionstrings.com.
el connection string de firebird para .net es el siguiente:
User=SYSDBA;Password=masterkey;Database=SampleDatabase.fdb;DataSource=localhost; Port=3050;Dialect=3; Charset=NONE;Role=;Connection lifetime=15;Pooling=true; MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;
enjoy =)
el connection string de firebird para .net es el siguiente:
User=SYSDBA;Password=masterkey;Database=SampleDatabase.fdb;DataSource=localhost; Port=3050;Dialect=3; Charset=NONE;Role=;Connection lifetime=15;Pooling=true; MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;
enjoy =)
por Fernando Hoyos y Omar Alanis:
sin duda la parte mas difícil es la configuración, si no tenemos cuidado podemos pasar por un mal rato.
aqui estamos asignando permisos al repositorio que el usuario de apache (www-data) y al grupo subversión para que todos los usuarios que accesen via web se autentiquen con su usuario del grupo subversión.
Hay que tener mucho cuidado ya que si asignamos de forma errónea los permisos no nos dejara accesar al repositorio.
si todo a salido bien, nos debe de aparecer la siguiente imagen.
y si algo salio mal, nos debería de aparecer la siguiente imagen:
Importar nuestro primer proyecto al repositorio.
Una vez que tenemos configurado nuestro repositorio, ahora lo que tenemos que hacer es importar nuestro proyecto.
para esto, lo primero que tenemos que hacer es crear una carpeta, no importa en la posicion que estemos.
mkdir proyecto1
Accesamos al folder proyecto1
cd proyecto1
y luego lo que tenemos que hacer es crear un archivo y ponerle una descripción de ejemplo.
nano ejemplo
ahora si ya tenemos nuestro primer proyecto, lo que tenemos que hacer ahora es hacer el primer import al repositorio:
sudo svn import proyecto1/ file:///var/www/repos/repositorioejemplo/proyecto1
tambien lo podemos hacer por el protocolo http:
sudo svn import proyecto1/ http://localhost/svn/repositorioejemplo/proyecto1
Hecho esto, veremos en la consola que ya se hizo el primer commit:
creo que es necesario aclarar que existen varios protocolos para utilizar svn, uno de ellos es el file:/// este protocolo solo se utiliza localmente en el servidor.
tambien tenemos el protocolo http:// este protocolo es el que nosotros utilizaremos con dav, para accesar via web.
tambien existe el protocolo https:// este protocolo es que se utiliza con encriptacion ssl, este no lo utilizaremos, tal ves en una chance me anime a realizar una instalacion y configuracion usando certificados ssl.
tambien contamos con el protocolo svn, pero no lo e utilizado.
Ya una vez hecho el import, es necario darle permisos, por que vemos que pasa cuando intentamos accesar al repositorio una vez hecho el import local.
vemos que pasa si no cambiamos los permisos en el repositorio.
primero que nada, accesamos via url: 127.0.0.1/svn/repositorioejemplo/proyecto1
y nos autenticamos.
una vez autenticados, nos saldra este error:
pero pues no hay que preocuparnos, la solucion es darle nuevamente los permisos al repositorio.
Tengo que confezar que tardamos como 5 dias para resolver este error.
Ahora solamente necesitamos volver a accesar al repositorio.
Y veamos que nos sale:
Requerimientos:
Instalación de Ubuntu 11.04
Instalación de Ubuntu 11.04
Requisitos:
- Actualización de los repositorios de Ubuntu 11.04
apt-get install update
- Instalación de Apache 2
sudo apt-get install apache
- Probamos el Servidor Apache
Iniciamos apache : /etc/init.d/apache2 start
En el navegador probamos el servidor con la dirección local 127.0.0.1
Instalación:
- Subversión y Herramientas
sudo apt-get install subversion subversion-tools
- Verificamos los módulos dav y dav_svn
a2enmod dav
cuando activamos dav, estamos asegurando que solo usuarios autorizados por subversión puedan accesar al repositorio.
Si no están instalados, los instalamos
sudo apt-get install libapache2-svn
Para asegurar los cambios reiniciamos Apache
/etc/init.d/apache2 restart
Configuración:
Agregamos un grupo para la subversión
sudo groupadd subversion
es muy importante crear un grupo especial para subversión por cuestión de los permisos de los usuarios que estén autorizados.
Ahora creamos el archivo que contendrá un password para el administrador de subversion
sudo htpasswd -c /etc/apache2/dav_svn.passwd user
aqui estamos creando un usuario y ademas con la cerradura -c estamos creando a su vez el archivo dav_svn.passwd, que es el que contendrá los usuarios autorizados a su vez que sus contraseñas, obviamente encriptadas por cuestión de seguridad.
Luego creamos el repositorio donde se versionara nuestro proyecto en los directorios correspondientes
cd/var/www
mkdir repos
svnadmin create repositorioejemplo
cd
repositorioejemplo (entramos al repositorio)
Despues de esto le damos los permisos necesarios que necesita el repositorio para que los usuarios de subversion puedan accesar sin problemas.
vamos a utilizar el comando chown que sirve para agregar permisos a un determinado usuario o grupo o ambos para que puedan accesar al repositorio
sudo chown -R www-data:subversion /var/www/repos/repositorioejemplo
sudo chmod -R 770 /var/www/repos/repositorioejemplo
Tal ves nos pueda sacar de onda la cerradura -R, pero lo unico que hace es que asigne los permisos y herede a todos los archivos o subcarpetas del repositorio.
si todo a salido bien, nos debe de aparecer la siguiente imagen.
Importar nuestro primer proyecto al repositorio.
Una vez que tenemos configurado nuestro repositorio, ahora lo que tenemos que hacer es importar nuestro proyecto.
para esto, lo primero que tenemos que hacer es crear una carpeta, no importa en la posicion que estemos.
mkdir proyecto1
Accesamos al folder proyecto1
cd proyecto1
y luego lo que tenemos que hacer es crear un archivo y ponerle una descripción de ejemplo.
nano ejemplo
ahora si ya tenemos nuestro primer proyecto, lo que tenemos que hacer ahora es hacer el primer import al repositorio:
sudo svn import proyecto1/ file:///var/www/repos/repositorioejemplo/proyecto1
tambien lo podemos hacer por el protocolo http:
sudo svn import proyecto1/ http://localhost/svn/repositorioejemplo/proyecto1
Hecho esto, veremos en la consola que ya se hizo el primer commit:
creo que es necesario aclarar que existen varios protocolos para utilizar svn, uno de ellos es el file:/// este protocolo solo se utiliza localmente en el servidor.
tambien tenemos el protocolo http:// este protocolo es el que nosotros utilizaremos con dav, para accesar via web.
tambien existe el protocolo https:// este protocolo es que se utiliza con encriptacion ssl, este no lo utilizaremos, tal ves en una chance me anime a realizar una instalacion y configuracion usando certificados ssl.
tambien contamos con el protocolo svn, pero no lo e utilizado.
Ya una vez hecho el import, es necario darle permisos, por que vemos que pasa cuando intentamos accesar al repositorio una vez hecho el import local.
vemos que pasa si no cambiamos los permisos en el repositorio.
primero que nada, accesamos via url: 127.0.0.1/svn/repositorioejemplo/proyecto1
y nos autenticamos.
una vez autenticados, nos saldra este error:
pero pues no hay que preocuparnos, la solucion es darle nuevamente los permisos al repositorio.
sudo chown -R www-data:subversion /var/www/repos/repositorioejemplo
sudo chmod -R 770 /var/www/repos/repositorioejemplo
Tengo que confezar que tardamos como 5 dias para resolver este error.
Ahora solamente necesitamos volver a accesar al repositorio.
Y veamos que nos sale:
Que tal, ahora vamos a ver la forma de como graficar cuadros en c sharp.
- Lo primero que necesitas es crear un nuevo proyecto de tipo windows form
- Una vez que tenemos creado nuestro proyecto, agregamos un menuStrip en nuestra forma y agregamos un elemento llamado Generar cuadro.
- Ahora vamos a ver como crear un cuadro en c#.
lo primero que necestamos saber, es que en c-sharp tenemos la clase Graphics, la cual nos permite hacer una instancia en base a una instancia de la clase Form.
Graphics grafics = this.CreateGraphics();
Aquí estamos creando una instancia de la clase Graphics, notese que no se usa la palabra reservada new para hacer la instancia, si no que la forma o cualquier clase que herede de Form tiene un metodo llamado CreateGraphics(); que nos permite generar una instancia de un objeto Graphics.
Una vez teniendo nuestro objeto Graphics, es necesario saber como dibujuar un cuadro. Para eso es necesario un método llamado GraficarCuadro(int x, int y, int width, int height, Color color), y lo agregamos al archivo .cs de nuestra forma.
private void GraficarCuadro(int x, int y, int width, int height, Color color)
{
Graphics grafics = this.CreateGraphics();
Rectangle rectangulo = new Rectangle(x, y, width, height);
SolidBrush brush = new SolidBrush(color);
Pen pluma = new Pen(brush);
grafics.FillRectangle(brush, rectangulo);
}
Con este método podemos graficar cuadros y rectángulos de un determinado tamaño y color. pero lo que nos interesa a nosotros es como generar una cantidad aleatoria de cuadros en la pantalla, para esto, es necesario introducir el siguiente código en nuestro evento onclick de nuestro elemento del menuStrip, en mi caso, el nombre del item del menuStrip se llama generarCuadrosALoEstupido.
private void generarCuadrosALoEstupidoToolStripMenuItem_Click(object sender, EventArgs e)
{
Random random = new Random(DateTime.Now.Millisecond);
for (int i = 0; i < 50; i++) // nota1
{
GraficarCuadro(random.Next(10, this.Width), random.Next(10, this.Height),
random.Next(1, 200), random.Next(1, 200),
Color.FromArgb(random.Next(0, 256),random.Next(0, 256),random.Next(0, 256)));
Thread.Sleep(300);
}
}
nota1: notese que la cantidad de cuadros que se graficaran sera de 50, aqui se le puede cambiar de manera que el usuario indique cuantos cuadros se necesitan graficar.
Que tal, en esta ocasión vamos a crear una clase llamada Matriz, la cual va a ser una plantilla para cualquier tipo de dato en c-sharp.
Dicha clase va a tener un arreglo bidimensional de registros, el numero de renglones y de columnas.
Aquí les dejo el código:
//--------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
public class Matriz<T>
{
private T[,] registros;
private int numeroRenglones;
public int NumeroRenglones
{
get { return numeroRenglones; }
set { numeroRenglones = value; }
}
private int numeroColumnas;
public int NumeroColumnas
{
get { return numeroColumnas; }
set { numeroColumnas = value; }
}
public Matriz(int renglones, int columnas)
{
NumeroRenglones = renglones;
NumeroColumnas = columnas;
this.registros = new T[renglones, columnas];
}
public T this[int renglon, int columna]
{
get
{
return registros[renglon, columna];
}
set
{
registros[renglon, columna] = value;
}
}
}
Dicha clase va a tener un arreglo bidimensional de registros, el numero de renglones y de columnas.
Aquí les dejo el código:
//--------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
public class Matriz<T>
{
private T[,] registros;
private int numeroRenglones;
public int NumeroRenglones
{
get { return numeroRenglones; }
set { numeroRenglones = value; }
}
private int numeroColumnas;
public int NumeroColumnas
{
get { return numeroColumnas; }
set { numeroColumnas = value; }
}
public Matriz(int renglones, int columnas)
{
NumeroRenglones = renglones;
NumeroColumnas = columnas;
this.registros = new T[renglones, columnas];
}
public T this[int renglon, int columna]
{
get
{
return registros[renglon, columna];
}
set
{
registros[renglon, columna] = value;
}
}
}
//-----------------------------------------------------------------------------------------
Lo interesante de esta clase es la forma de asignación al objeto Matriz, para asignar directamente al objeto un registro, se hace uso del método "public T this[int renglon, int columna]", veamos un ejemplo de como usar esta clase:
Matriz<bool> tableroBooleano = new Matriz<bool>(8, 8);
tableroBooleano[0,0] = false;
Un Saludo...
Buena Vibraaaa!!!!
Que tal, en esta ocasión vamos a trabajar en la graficacion de un simple tablero de ajedrez en c sharp.
1.- Primero que nada necesitamos crear un nuevo proyecto de tipo windows form
2.- Ahora en nuestra forma, agregamos un MenuStrip
3.- Implementación del código necesario para graficar un tablero de ajedrez.
public void DibujarTableroDeAjedrez(Form forma)
{
bool blanco = true;
int anchoCuadricula = 30;
int x = 40, y = 40;
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if (blanco)
{
FxTools.GraficarCuadro(forma, Color.FromArgb(0, 255, 0), x, y, anchoCuadricula);
blanco = false;
}
else
{
FxTools.GraficarCuadro(forma, Color.FromArgb(0, 0, 0), x, y, anchoCuadricula);
blanco = true;
}
x +=31;
}
if (blanco)
blanco = false;
else
blanco = true;
x = 40;
y += 31;
}
}
//-----------------------------------------------------------------------------------------------------------
este es el código necesario para graficar un tablero de ajedrez, como ven, tenemos de una bandera que nos servirá cuando pintar un cuadro de color blanco y cuando no, tenemos un ancho de cuadricula, que por defecto es 30 (por fines didácticos se estableció hardcode los valores de "anchoCuadricula", "x" y de "y".
Contamos con dos bucles que nos servirán para recorrer la cuadricula, la dimensión de un tablero de ajedrez es de 8 x 8, que nos da un total de 64 casillas.
en cada casilla se establecerá un color, ya sea blanco o negro, todo esto va a depender de la bandera "blanco", para obtener el color blanco, lo podemos obtener de varias formas, en esta ocasión se obtiene por medio del método estático FromArgb de la clase Color
En el caso de graficar el color, para el color blanco se opta poner el color verde (0,255,0) y en el caso de las casillas oscuras, el color negro (0,0,0)
4.- creando la clase FxTools e implementando el metodo GraficarCuadro
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
namespace EjemploBlog
{
class FxTools
{
public static void GraficarCuadro(Form forma, Color color, int x, int y, int ancho)
{
SolidBrush solidBrush = new SolidBrush(color);
Graphics g = forma.CreateGraphics();
g.FillRectangle(solidBrush, x, y, ancho, ancho);
}
}
}
5.- accesando al metodo DibujarTableroDeAjedrez(Form forma)
Ya para terminar con este ejemplo, vamos a mandarlo llamar de nuestro MenuStrip:
private void tableroDeAjedrezToolStripMenuItem_Click(object sender, EventArgs e)
{
DibujarTableroDeAjedrez(this);
}
6.- el programa en tiempo de ejecución
1.- Primero que nada necesitamos crear un nuevo proyecto de tipo windows form
2.- Ahora en nuestra forma, agregamos un MenuStrip
3.- Implementación del código necesario para graficar un tablero de ajedrez.
public void DibujarTableroDeAjedrez(Form forma)
{
bool blanco = true;
int anchoCuadricula = 30;
int x = 40, y = 40;
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if (blanco)
{
FxTools.GraficarCuadro(forma, Color.FromArgb(0, 255, 0), x, y, anchoCuadricula);
blanco = false;
}
else
{
FxTools.GraficarCuadro(forma, Color.FromArgb(0, 0, 0), x, y, anchoCuadricula);
blanco = true;
}
x +=31;
}
if (blanco)
blanco = false;
else
blanco = true;
x = 40;
y += 31;
}
}
//-----------------------------------------------------------------------------------------------------------
este es el código necesario para graficar un tablero de ajedrez, como ven, tenemos de una bandera que nos servirá cuando pintar un cuadro de color blanco y cuando no, tenemos un ancho de cuadricula, que por defecto es 30 (por fines didácticos se estableció hardcode los valores de "anchoCuadricula", "x" y de "y".
Contamos con dos bucles que nos servirán para recorrer la cuadricula, la dimensión de un tablero de ajedrez es de 8 x 8, que nos da un total de 64 casillas.
en cada casilla se establecerá un color, ya sea blanco o negro, todo esto va a depender de la bandera "blanco", para obtener el color blanco, lo podemos obtener de varias formas, en esta ocasión se obtiene por medio del método estático FromArgb de la clase Color
En el caso de graficar el color, para el color blanco se opta poner el color verde (0,255,0) y en el caso de las casillas oscuras, el color negro (0,0,0)
4.- creando la clase FxTools e implementando el metodo GraficarCuadro
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
namespace EjemploBlog
{
class FxTools
{
public static void GraficarCuadro(Form forma, Color color, int x, int y, int ancho)
{
SolidBrush solidBrush = new SolidBrush(color);
Graphics g = forma.CreateGraphics();
g.FillRectangle(solidBrush, x, y, ancho, ancho);
}
}
}
5.- accesando al metodo DibujarTableroDeAjedrez(Form forma)
Ya para terminar con este ejemplo, vamos a mandarlo llamar de nuestro MenuStrip:
private void tableroDeAjedrezToolStripMenuItem_Click(object sender, EventArgs e)
{
DibujarTableroDeAjedrez(this);
}
6.- el programa en tiempo de ejecución
Actitud proactiva.
la primer cualidad que todos debemos de tener, en lo personal, el exito de nuestro proyecto depende de tener buena actitud. Afrontar las adverisdades de una manera efectiva, no dejarnos consumir por la presión abrumadora. Tener siempre una sonrisa en el rostro, al final de cuentas estamos haciendo lo que mas nos gusta... “Software”.
Estandarización de nombres de variables, métodos y clases.
supongamos que tenemos que revisar el código de algún colega de trabajo, con lo cual tenemos que revisar sobre lo que ha estado trabajando. analizando el código llegamos a la cuenta de que no sabemos lo que se hace, ya que solo encontramos nombres de variables mal definida,por ejemplo: valor1, valor2, valor3, cantidad1, cantidad2, cantidad3, resultado2, col1, col2, col3. Estoy de acuerdo de que nuestro colega encuentra una manera clara de ver el significado al nombre de sus variables, pero ese código debe de ser completamente legible por otros desarrolladores. Es por lo cual se tiene que hacer una estandarización de nombres de variables, métodos y clases. sin olvidar seguir la estandarización de cada lenguaje de programacion. en el caso de java, los métodos siempre comienzan con minúscula. en c# .net los métodos comienzan siempre con mayúscula.
Estandarización de nombres de variables, métodos y clases.
supongamos que tenemos que revisar el código de algún colega de trabajo, con lo cual tenemos que revisar sobre lo que ha estado trabajando. analizando el código llegamos a la cuenta de que no sabemos lo que se hace, ya que solo encontramos nombres de variables mal definida,por ejemplo: valor1, valor2, valor3, cantidad1, cantidad2, cantidad3, resultado2, col1, col2, col3. Estoy de acuerdo de que nuestro colega encuentra una manera clara de ver el significado al nombre de sus variables, pero ese código debe de ser completamente legible por otros desarrolladores. Es por lo cual se tiene que hacer una estandarización de nombres de variables, métodos y clases. sin olvidar seguir la estandarización de cada lenguaje de programacion. en el caso de java, los métodos siempre comienzan con minúscula. en c# .net los métodos comienzan siempre con mayúscula.
En cuanto a los métodos, es recomendable que se asigne un nombre significativo y completamente claro. por ejemplo:
“GenerarFacturaElectronica(Factura factura); “
al leer este método, nos queda claro de que se va a generar una factura electronica que recibe como argumento a un objeto de la clase Factura; Ademas que no hace falta poner comentarios de lo que hace dicho metodo.
Adoptar el paradigma Orientado a Objetos.
con el paradigma orientado a objetos tenemos la ventaja de reutilizar codigo, todo esto con el fin de aprovechar al máximo los pilares de la programación orientada a objetos
los patrones de diseño nos pemiten la venteja de resolver problemas complejos de programacion que tienen una cierta conducta, en base a esta peculiaridad podemos concretar en un mejor diseño, abstrayendo la escénica en un patron.
con el paradigma orientado a objetos tenemos la ventaja de reutilizar codigo, todo esto con el fin de aprovechar al máximo los pilares de la programación orientada a objetos
- Abstracción
- Encapsulacion
- Herencia
- Polimorfismo
- Introspección
- Reflexión
los patrones de diseño nos pemiten la venteja de resolver problemas complejos de programacion que tienen una cierta conducta, en base a esta peculiaridad podemos concretar en un mejor diseño, abstrayendo la escénica en un patron.
Identar el código.
Es muy importante tener identado nuestro código. Con esto se cumple un estándar entre los programadores de software. Asi cuando alguien vea tu código, este se familiarizara mucho mas fácil con el código. Ademas de aportar belleza en la estructura del codigo.
Es muy importante tener identado nuestro código. Con esto se cumple un estándar entre los programadores de software. Asi cuando alguien vea tu código, este se familiarizara mucho mas fácil con el código. Ademas de aportar belleza en la estructura del codigo.
Versionar
Versionar nuestro software con herramientas de servidor de versiones como tortoise. Con estas herramientas nos olvidamos de la preocupación de los respaldos, haciendo esto mas ágil el proceso de desarrollo.
Versionar nuestro software con herramientas de servidor de versiones como tortoise. Con estas herramientas nos olvidamos de la preocupación de los respaldos, haciendo esto mas ágil el proceso de desarrollo.
Generar herramientas
Es muy buena practica ir armando nuestra colección de clases que nos permitan hacer el trabajo de una manera mas rápida y eficiente.
Es muy buena practica ir armando nuestra colección de clases que nos permitan hacer el trabajo de una manera mas rápida y eficiente.
Mientras nos encontremos en un proceso de generación de herramientas, debemos adquirir la buena practica de ir acomodando nuestras clases en librerías (dll). Esto con el fin de poder exportar nuestras herramientas de un determinado lenguaje a otro.
Imaginacion.
Desarrollar software, tocar guitarra, pintar al oleo, escribir un libro, escribir poesia, entre muchas cosas mas. Sin la imaginacion no se llegara muy lejos en nuestra vocacion.
Desarrollar software, tocar guitarra, pintar al oleo, escribir un libro, escribir poesia, entre muchas cosas mas. Sin la imaginacion no se llegara muy lejos en nuestra vocacion.
fuentes:
Experiencia personal y experiencia de otros desarrolladores que me han ayudado en adoptar buenas tecnicas de programacion
Suscribirse a:
Entradas (Atom)