Lineamientos de programación
Antes de iniciar a tirar código es necesario definir algunos lineamientos para que todos escribamos código semejante, llevar algunos estándares de programación siempre es bueno, en este post voy a ir definiendo algunos puntos a considerar, si cren que falta algún otro por favor me lo comentan.
* NO USAR ID's para los componentes, quiero poner este como el primer punto porque al usar ID's en una aplicación grande los errores comienzan a salir y es complicado debuguearlos, así que evitemos el uso de ID's en los componentes.
* Definir namespace Estaremos escribiendo clases y trataremos de no agregar variables al global scope, ya definiré más adelante los paquetes a utilizar, pero si debemos considerar NUNCA crear variables en el global scope.
* Documentar código importantisimo documentar el código para luego generar automáticamente una API similar a la que tiene ExtJS, pero para eso tenemos que ir documentando el código, unicamente documentaremos los métodos públicos o que el usuario (otros programadores) puedan usar. A continuación dejo un ejemplo de como documentar un clase:
/**
* @class Bleext.desktop.LoginWindow
* @extends Ext.Window
* @autor Crysfel Villa
* @date Wed Mar 9 11:03:18 CST 2011
*
* This class display the login Window, you need to bla bla bla...
*
**/
Ext.ns("Bleext.desktop");
Ext.define('Bleext.desktop.LoginWindow', {
extend: 'Ext.Window',
title: 'Log in',
/**
* This is the property description
* @property modal
* @type Boolean
*/
modal : true,
mixins : {
connection : "Bleext.connectivity.Ajax",
validations : "Bleext.form.Validation"
},
config : {
/**
* @cfg {Number} attempts The number of attempts before...
*/
attempts : 0,
/**
* @cfg {Boolean} configuration This is the description
*/
configuration : false
},
initComponent: function() {
Ext.apply(this, {
items: [
//as above
]
});
this.addEvents({
/**
* @event eventName
* This is the event description
* @param {Number} paramName This is the parameter description
*/
'eventName' : true
});
/**
* This is the property description
* @property myProperty
* @type Number
*/
this.myProperty = 29;
Bleext.desktop.LoginWindow.superclass.initComponent.apply(this, arguments);
},
/**
* This is the main description of the function, here you can bla bla...
* @param {String} paramName This is the parameter description
* @return {String} This is the return value description
*/
functionName : function(paramName) {
return "This is a test";
}
});
De esta manera podemos generar la documentación automáticamente, así que iremos documentando todas las configuraciones, métodos, propiedades, eventos que puedan ser utilizados por otros desarrolladores en un futuro.
PS: voy a ir actualizando el post en cuanto tenga otro rato libre, también se aceptan sugerencias o bien críticas respecto a los lineamientos.
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.