Herramientas de usuario

Herramientas del sitio


ada:tips:sicoferp:general:pbtows:procesos:developmentstandards:nomenclature:pb

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
ada:tips:sicoferp:general:pbtows:procesos:developmentstandards:nomenclature:pb [2019/10/17 20:31]
administraidor
ada:tips:sicoferp:general:pbtows:procesos:developmentstandards:nomenclature:pb [2019/10/22 15:52] (actual)
administraidor [Recomendaciones:]
Línea 30: Línea 30:
   * **Capa Controller**:​ Capa relacionada con los procesos de orquestación de servicios.   * **Capa Controller**:​ Capa relacionada con los procesos de orquestación de servicios.
   * **Capa Model**: Capa relacionada con los procesos de la lógica del negocio (código migrado).   * **Capa Model**: Capa relacionada con los procesos de la lógica del negocio (código migrado).
 +
 +==== Prefijos ====
 +  * **ws: (WebService)**:​ Prefijo asociado a la exposición de servicios. Es utilizado por las librerías lanzadoras.
 +  * **sf: (Software)**:​ Prefijo asociado a las librerias de implementación de los procesos y la exposición de los servicios.
  
 ==== Librerías ==== ==== Librerías ====
 Se deben crear respetando las siguientes convenciones de acuerdo a la capa de implementación (se toma como ejemplo el componente Login): Se deben crear respetando las siguientes convenciones de acuerdo a la capa de implementación (se toma como ejemplo el componente Login):
  
-^  Tipo Libreria ​ ^  Prefijo ​ ^  Código Aplicación ​ ^  Capa de implementación ​ ^  Nombre Componente ​ ^  Ejemplo ​ ^+^  Tipo Libreria ​ ^  Prefijo ​ ^  Código Aplicación ​ ^  Capa de implementación ​ ^  Nombre Componente ​ ^  Ejemplo ​   ^
 |Lanzadora|ws|00|No Aplica|login|ws00_login.pbl| |Lanzadora|ws|00|No Aplica|login|ws00_login.pbl|
-|Invocadora|sf|00|controller|login|sf00controller_login.pbl| +|Invocadora|sf|00|Controller|login|sf00controller_login.pbl| 
-|Modelo|sf|00|model|login|sf00model_login.pbl|+|Modelo|sf|00|Model|login|sf00model_login.pbl|
  
 === Observaciones === === Observaciones ===
Línea 43: Línea 47:
   * Todos los nombres de librerías deben ser en minuscula.   * Todos los nombres de librerías deben ser en minuscula.
   * La capa de implementación de la libreria Lanzadora no aplica porque esa capa es gestionada automaticamente por powerbuilder al desplegar las operaciones de los servicios SOAP.   * La capa de implementación de la libreria Lanzadora no aplica porque esa capa es gestionada automaticamente por powerbuilder al desplegar las operaciones de los servicios SOAP.
 +  * Los nombres pueden contener el separador _
 +  * Los nombres deben representar las funcionalidades contenidas, debe evitar acronimos.
 +  * Los nombres no deben estar duplicados incluso en otros proyectos.
  
 +==== Codificación ====
  
 +=== Calificadores de Alcance ===
 +
 +^  Alcance ​ ^  Prefijo ​ ^  Ejemplo ​ ^  Restricciones ​ ^
 +|Argumento|a|al_variable|Ninguna|
 +|Global|g|gl_variable|No permita en la implementación|
 +|Instance|i|il_variable|Ninguna|
 +|Local|l|ll_variable|Ninguna|
 +|Shared|s|sl_variable|No permita en la implementación|
 +
 +=== Calificadores de Alcance ===
 +
 +^  Tipo Dato  ^  Prefijo ​ ^  Ejemplo ​ ^  Observaciones ​ ^
 +|Any|a|la_raw|Solo se puede utilizar en las librerias Modelo|
 +|Blob|blb|lblb_image|Se recomienda hacer uso limitado de este tipo y solo en las librerías Modelo|
 +|Boolean|b|lb_exit| |
 +|Character|c|lc_letra| |
 +|Date|d|ld_fecha|Evaluar el uso de este tipo en procesos que van a la base de datos. Se recomienda usar el tipo Datetime|
 +|Datetime|dt|ldt_fecha| |
 +|Decimal|dec|ldec_numero| |
 +|Double|db|ldb_numero| |
 +|Integer|i|li_numero| |
 +|Long|l|ll_numero| |
 +|Real|r|lr_numero|Se recomienda el uso del tipo Double|
 +|String|s|ls_cadena| |
 +|Time|t|lt_tiempo|Evaluar el uso de este tipo en procesos que van a la base de datos. Se recomienda usar el tipo Datetime|
 +|Unsigned Integer|ui|lui_numero| |
 +|Unsigned Long|ul|lul_numero| |
 +
 +=== Prefijos de Tipo de Datos de Objetos Estándar ===
 +
 +
 +^  Tipo Dato  ^  Prefijo ​ ^   ​Código Aplicación ​ ^  Ejemplo ​ ^  Observaciones ​ ^
 +|Application|ws|00|ws00_login|Solo para proyectos de exposición de servicios |
 +|Application|app|00|app00_login|Solo para proyectos de consumo de servicios (Proxy) |
 +|ClassDefinition|cldef| |lcldef_Object| |
 +|ClassDefinitionObject|cldefo| |lcdefo_ThatObject| |
 +|Connection|cn| |lcn_Known| |
 +|ConnectionInfo|cni| |lcni_ServerInfo| |
 +|ConnectObject|cno| |scno_ConObj| |
 +|Datastore|ds| |lds_source| |
 +|Datawindow Grid|dwg| |dwg_lista|Solo aplica para la definición del control (dataobject). No para utilización en la implementación (se usa datastore)|
 +|Datawindow Free|dwf| |dwf_consulta|Solo aplica para la definición del control (dataobject). No para utilización en la implementación (se usa datastore)|
 +|DynamicDescriptionArea|dda| |ldda_Execute| |
 +|DynamicStagingArea|dsa| |ldsa_MyQuery| |
 +|EnumerationDefinition|enum| |lenum_Cycle| |
 +|EnumerationItemDefinition|enumi| |ienumi_Item| |
 +|Environment|env| |lenv_System| |
 +|Error|err| |gerr_Snarl| |
 +|ExtObject|exto| |gexto_Outside| |
 +|Function_Object|of| |of_Function| |
 +|iNet|inet| |linet_Web| |
 +|InternetResult|ir| |lir_Page| |
 +|MailFileDescription|mfd| |lmfd_Mail| |
 +|MailMessage|mm| |lmm_Mail| |
 +|MailRecipient|mr| |lmr_Mail| |
 +|MailSession|ms| |lms_Session| |
 +|NonVisualObject|nvo| |lnvo_Invisible| |
 +|OLEObject|oo| |loo_Ghost| |
 +|OLEStorage|ostg| |gostg_WordFile| |
 +|OLEStream|ostm| |lostm_River| |
 +|OMObject|omo| |iomo_Bob| |
 +|OMStorage|omstg| |somstg_Drive| |
 +|OMStream|omstm| |lomstm_Mersey| |
 +|PBtoCPPObject|pb2cpp| |lpb2cpp_Quad| |
 +|Pipeline|pl| |lpl_OilandGas| |
 +|Powerobject|po| |lpo_Source| |
 +|ProfileCall|prc| |lprc_Face| |
 +|ProfileClass|prcl| |lprcl_Room| |
 +|ProfileLine|prl| |iprl_Bob| |
 +|ProfileRoutine|prr| |lprr_Cat| |
 +|Profiling|pr| |lpr_Outline| |
 +|RemoteObject|ro| |iro_Employee| |
 +|ScriptDefinition|sdef| |lsdef_Mycode| |
 +|Service|srv| |lsrv_Charge| |
 +|SimpleTypeDefinition|std| |istd_MyType| |
 +|Structure|str| |lstr_Data| |
 +|SystemFunctions|sf| |lsf_Bay| |
 +|Timing|tmg| |ltmg_Clock| |
 +|TraceActivityNode|tran| |ltran_Node| |
 +|TraceBeginEnd|trbe| |ltrbe_Start| |
 +|TraceError|tre| |ltre_Error| |
 +|TraceFile|trf| |itrf_TraceFile| |
 +|TraceGarbageCollect|trgc| |itrgc_Call| |
 +|TraceLine|trln| |strln_Rope| |
 +|TraceObject|tro| |ltro_Bob| |
 +|TraceRoutine|trr| |ltrr_Tiger| |
 +|TraceSQL|trsql| |ltrsql_MySQL| |
 +|TraceTree|trt| |ltrt_Birch| |
 +|TraceTreeError|trte| |ltrte_Err| |
 +|TraceTreeGarbageCollect|trtgc| |ltrtgc_Trash| |
 +|TraceTreeLine|trtl| |ltrtl_String| |
 +|TraceTreeNode|trtn| |ltrtn_Kilt| |
 +|TraceTreeObject|trto| |ltrto_Trace| |
 +|TraceTreeRoutine|trtr| |ltrtr_BobGrimmer| |
 +|TraceTreeUser|trtu| |ltrtu_User| |
 +|TraceUser|tru| |ltru_Blue| |
 +|Transaction|ts| |lts_Trans| |
 +|TypeDefinition|typdef| |ltypdef_Details| |
 +|UserObject|uo| |luo_Control| |
 +|VariableCardinalityDefinition|vcd| |lvcd_Type| |
 +|VariableDefinition|vd| |lvd_Sore| |
 +
 +=== Observaciones ===
 +  * Cualquier tipo de datos o control no definido en la tabla anterior no debe ser utilizado en la generación de componentes ni en el consumo de proxys.
 +
 +=== Convención de nombres de clases ===
 +
 +== Prefijos de clases ==
 +
 +^  Clase  ^  Prefijo ​ ^   ​Código Aplicación ​ ^  Ejemplo ​ ^  Observaciones ​ ^
 +|Standard Class User Object|n_| |n_ds|Esta nomenclatura se puede ignorar si se mantiene el nombramiento de variables y calificadores de acceso Ej: lds_source para datastore|
 +|Custom Class User Object|n_cst_| |n_cst_customer| |
 +|Global Structure|s_| |s_point| |
 +
 +== Nombramiento de clases: Custom Class User Object ==
 +
 +^  Tipo de Clase  ^  Capa de Implementación ​ ^  Prefijo ​ ^  Ejemplo ​ ^  Observaciones ​ ^
 +|Controller|Controller|n_cst_controller_|n_cst_controller_login|Se recomienda una sola implementación por componente|
 +|Service|Controller|n_cst_service_|n_cst_service_login|Se recomienda una sola implementación por componente|
 +|Model|Model|n_cst_|n_cst_login|Pueden existir varias clases modelo dependiendo de la complejidad del componente|
 +
 +=== Observaciones ===
 +  * Cualquier tipo de datos o control no definido en la tabla anterior no debe ser utilizado en la generación de componentes ni en el consumo de proxys.
 +
 +=== Convención de nombres de Tipos de Datawindows ===
 +
 +^  Clase  ^  Prefijo ​ ^   ​Código Aplicación ​ ^  Ejemplo ​ ^  Observaciones ​ ^
 +|Grid|dwg_| |dwg_prueba| |
 +|Free o para Filtros|dwf_| |dwf_prueba| |
 +|External|dwe_| |dwe_prueba| |
 +
 +=== Observaciones ===
 +  * Cualquier tipo de datawindows no definido en la tabla anterior no debe ser utilizado en la generación de componentes ni en el consumo de proxys.
 +
 +=== Convención de nombres de funciones ===
 +
 +^  Tipo  ^  Prefijo ​ ^   ​Código Aplicación ​ ^  Ejemplo ​ ^  Observaciones ​ ^
 +|Function Object|of_| |of_calcular_saldo| |
 +|Function Set|set_| |set_valor| |
 +|Function Get|get_| |get_valor| |
 +
 +=== Observaciones ===
 +  * No debe utilizar funciones globales.
  
 +==== Recomendaciones:​ ====
 +La siguientes recomendaciones no imponen reglas de utilización sin embargo trate en lo posible de aplicarlas ya que el hacerlo optimiza el código generado:
  
-  * [[ada:tips:​sicoferp:​general:​pbtows:​procesos:​developmentstandards:​nomenclature:​pb|Nomenclatura Powerbuilder]]+  * Evite el uso de variables globales. 
 +  * No utilice cursores en el código (utilice datastore). 
 +  * Evite el uso de funciones globales (agrupelas en objetos no visuales). 
 +  * Evite el uso de la tabla Dummy (utilice datawindows external). 
 +  * Evite el uso de la función RowCount() en un bucle Ejfor i = 1 to ldwg_prueba.RowCount ya que implica un consumo excesivo de ram en su lugar asigne el valor una variable y utilicela en la definición del bucle. 
 +  * Evite el uso del tipo de dato Date en su lugar utilice el tipo Datetime. 
 +  * No debe utilizar el tipo de datos Any en la capa de implementacion controller, solo puede ser utilizado en la capa model ya que las conversiones implicitas pueden generar comportamientos indefinidos y excepciones en tiempo de ejecución. 
 +  * El valor Nulo solo es permitido en las asignaciones implicitas setNull y en los valores de retornos de la base de datos.
  
ada/tips/sicoferp/general/pbtows/procesos/developmentstandards/nomenclature/pb.1571344280.txt.gz · Última modificación: 2019/10/17 20:31 por administraidor