Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Buenas Practicas de Programacion y Publicación

Creado por Pablo Grillo y Julian Palermo
by

Pablo Grillo

on 28 October 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Buenas Practicas de Programacion y Publicación

Buenas Practicas de Programación y Publicación

Objetivos del Trabajo
Un programador Profesional se caracteriza por:
Revisiones de código y estándares de codificación
Un estándar de codificación completo comprende todos los aspectos de la generación de código. Si bien los programadores deben implementar un estándar de forma prudente. Un código fuente completo debe reflejar un estilo armonioso, como si un único programador hubiera escrito todo el código de una sola vez.
Técnicas de codificación
Las técnicas de codificación incorporan muchos aspectos del desarrollo del software. Aunque generalmente no afectan a la funcionalidad de la aplicación, sí contribuyen a una mejor compresión del código fuente. En esta fase se tienen en cuenta todos los tipos de código fuente, incluidos los lenguajes de programación, de secuencias de comandos, de marcado o de consulta.
Introducción
Desarrollo
Los Principios:
Buenas prácticas de programación
Practicas generales de programación para cualquier lenguaje:
Practicas de Programación Según el Lenguaje
Expectativas
El objetivo del trabajo es conocer qué son las “Buenas prácticas de programación y publicación” para poder transmitírsela a nuestros compañeros que están programando en los distintos lenguajes.
¿Que hicimos?
Investigaremos sobre los protocolos que usan las empresas o universidades más conocidas del mundo, para así saber cómo operan.
¿Como empezaremos?
Para hacer nuestra búsqueda más amplia buscamos en las diferentes páginas web de cada empresa o universidad importante. y lo comparamos con la informacion encontrada sobre las buenas practicas de programacion.
¿De qué consta un lenguaje de programación?
Un Lenguaje de programación consta de reglas que ayudan a las personas que lo conocen a dar un mensaje; por poner un ejemplo, el idioma español al ser escrito necesita cumplir ciertas reglas ortográficas para que el que reciba el mensaje lo entienda.
¿Qué son las buenas prácticas?
Conjunto coherente de acciones que han rendido un excelente servicio en un determinado contexto y que en contextos similares deberian dar similares resultados.
¿Cómo ayudan las prácticas de programación y publicación?
Las prácticas de programación y publicación ayudan a que el código del programa sea entendible por todo el equipo de desarrolladores de software y de la más fácil lectura.
Revisiones de código y estándares de codificación
Técnicas de Codificación
Cuando el proyecto de software incorpore código fuente previo, o bien cuando realice el mantenimiento de un sistema de software creado anteriormente, el estándar de codificación debería establecer cómo operar con la base de código existente.
La legibilidad del código fuente repercute directamente en lo bien que un programador comprende un sistema de software.
Usar técnicas de codificación sólidas y realizar buenas prácticas de programación con vistas a generar un código de alta calidad es de gran importancia para la calidad del software y para obtener un buen rendimiento.
Aunque el propósito principal para llevar a cabo revisiones del código a lo largo de todo el desarrollo es localizar defectos en el mismo, las revisiones también pueden afianzar los estándares de codificación de manera uniforme
Seguir Estándares.
Seguir patrones de diseño
Reutilizar el código (no inventar mucho)
Usar librerías documentadas.
Hacer test semanales
Conocer bien nuestro entorno de desarrollo
Refactorización: técnica de ingeniería de software para reestructurar código fuente, alterando su estructura interna sin cambiar su comportamiento externo.
Comentar el código (no excesivamente porque hace lento al programa).
Ponerle nombres con sentido a las clases, variables, etc.
Leer código ajeno y que otros lean tu código.
Rendimiento: es importante medir el rendimiento de nuestras aplicaciones constantemente
Buena gestión de logs: los logs son las trazas o rastros que deja una aplicación. Nos brindaran información valiosa sobre que está ocurriendo en nuestro sistema donde aplicar las mejoras más inmediatas.
HTML
El desarrollo en HTML es lento. Se debe evitar nombres de archivos con espacios o caracteres que no sean parte del alfabeto inglés.
En la gran mayoría de los casos el servidor estará montado en Linux, el cual diferencia entre mayúsculas y minúsculas. HoLa.txt no será lo mismo que hola.txt.
Todas las modificaciones a un sistema existente, tendrán que ser probadas primero en un ambiente protegido, nunca en caliente.
Inventar el código: es de más fácil lectura.
Construyan su código primero para todos los navegadores y finalicen su desarrollo con Internet Explorer porque es más fácil hacer la página compatible primero con todos los navegadores y posteriormente con Internet Explorer.
En lo posible, apéguense al estándar más actual. (HTML 4.01).
No comenten mucho el HTML: ocupa espacio en la transferencia y al usuario final le podrá parecer lenta la carga.
PHP
Activar el reporte de errores error_reporting(E_ALL) es tu amigo. Utilízalo, junto con ini_set(„display_errors‟, „On‟), para ver todas las advertencias del compilador de PHP, saber qué métodos están depreciados, índices inexistentes, etc.
No emplear etiquetas cortas Para que el intérprete de PHP ejecute un código, éste ha de estar delimitado por las etiquetas de apertura y cierre de PHP.Si se permite el uso de etiquetas cortas el script se ejecutará exactamente igual.
Concatenación de cadenas, comillas simples(„) vs comillas dobles(“) Cuando trabajes con cadenas, evita siempre el uso de comillas dobles. La razón es que PHP analiza el contenido de las comillas dobles en búsqueda de variables que deban ser interpretadas, resultando en un tiempo de ejecución mayor.
C#
Escriba sus programas de C++ sencillo y directamente. Esto a veces se conoce como mantelo simple.
C++ no está seguro del funcionamiento de alguna característica de C++, experimente con un pequeño programa de prueba y vea lo que sucede.
Cada programa debe comenzar con un comentario que describa su propósito.
Dentro de los corchetes que definen el cuerpo de una función, sangre el cuerpo de la función un nivel. Esto resalta la estructura funcional de los programas y ayuda a simplificar su lectura.
Para hacer más legibles sus programas, ponga espacios después de las comas (, )
La declaración debe ser con variables con nombres significativos.
Siempre inserte una línea en blanco antes de una declaración que aparezca entre instrucciones ejecutables. Esto contribuye a la claridad del programa.
DRY
(Don’t Repeat Yourself)
Evitar la repetición en todas sus posibilidades
Abstraction Principle
Cada pieza de un programa debe ser implementada en un solo lugar del código.
KISS (Keep It Simple Stupid)
Manténgalo simple, ¡ESTUPIDO!

La mejor solución a un problema es la más simple.

Menos código = menos bugs
Avoid Creating a YAGNI
Yagni (You aren‟t going to need it): Evitar crear algo que no vamos a necesitar.
So the simplest thing that could possibly work
Hagalo lo más simple,pero que funcione.
Don’t make me think
“No me hagas pensar”

Los nombres de las funciones, variables, etc deben declarar claramente lo que hacen
Open/Closed Principle
Principio Abierto/Cerrado

Se debe escribir clases, no para que otros la modifiquen, sino para que la usen y extiendan.
Write Code for the Maintainer
Escriba código pensando en el que va a mantenerlo

“Escriba el código como si el que tuviera que mantenerlo fuera un psicópata asesino que conoce donde vivis”
Principle of least astonishment
Principio del menor asombro

Ejemplo: el nombre de una función debe describir lo que hace
Single Responsibility Principle
Principio de responsabilidad única

Un componente de código debe ejecutar una única bien definida tarea
Minimize Coupling
Minimizar el acoplamiento

Cada componente (Bloque de código, clase, función, etc) debe minimizar las dependencias de otros componentes lo mayor posible.
Maximize Cohesion
Maximizar cohesión

Cada componente (Bloque de código, clase, función, etc) debe minimizar las dependencias lo mayor posible.
Hide Implementation Details
Ocultar detalles de implementación

Usar correctamente el public y el prívate.
Avoid Premature Optimization
Evitar la optimización prematura

Evitar optimizar código, si apenas lo estamos armando.
Code Reuse is good
La reutilización del código es buena

Ejemplo en java se puede usar Apache Commons


Embrace Change
Abraza el cambio

Prepárate todo el tiempo para programar ágilmente, integrarte al cambio continuamente, etc
Su alto dominio de las revisiones de codigo y estandares de codificacion, y tecnicas de codificacion. Esto radica en tomar pequeñas decisiones que sirvan para resolver gran cantidad de problemas.
JAVA
Comparaciones: Es recomendable usar primero las constantes en las comparaciones y de esta forma nos evitamos un posible NullPointerException.
Concatenación: Cuando pensamos concatenar varios String es recomendable usar la clase StringBuilder o StringBuffer que hacen esta tarea con mayor performance.
Si queremos saber si un String es igual a “” es recomendable usar el método length() ya que se nota una leve mejora de performance en este.
Debemos chequear los objetos que nos retorna un método para ver si no han vuelto en Null así de esta manera evitamos un posible NullPointerException.
Es mejor referirse a interfaces ya que es mucho más genérico y además nos permite cambiar la implementación.
Cuando iteramos un Map es mejor iterar sobre los Entry del mismo y de este modo ya poseemos la key y el valué encapsulado en ese objeto de manera que ahorramos algunas operaciones y ganamos performance.
Full transcript